程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 菜單-做側滑布局錯誤,我找不到怎解決,大牛們幫看看,白菜求解

菜單-做側滑布局錯誤,我找不到怎解決,大牛們幫看看,白菜求解

編輯:編程綜合問答
做側滑布局錯誤,我找不到怎解決,大牛們幫看看,白菜求解

package com.test.cehua.sindleMenu;

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;

public class SindleMenu extends HorizontalScrollView {

private LinearLayout mWapper;
private ViewGroup mMenu;
private ViewGroup mContent;
private int screenWidth;// 屏幕的寬度
// 單位是dp
private int mMenuRightPadding = 50;// 菜單距離屏幕右側的寬度

private boolean once = false;

private int mMenuWidth;// 定義菜單區的寬度

/**
 * 未用自定義菜單的時候,調用
 * 
 * @param context
 * @param attrs
 */
public SindleMenu(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
    /*
     * 獲取到屏幕的寬度
     */
    //隱藏標題欄


    WindowManager windowManager = (WindowManager) context
            .getSystemService(Context.WINDOW_SERVICE);// 獲取到window服務

    DisplayMetrics outMetrics = new DisplayMetrics();
    // 通過window服務獲取到量度值outMetrics
    windowManager.getDefaultDisplay().getMetrics(outMetrics);
    screenWidth = outMetrics.widthPixels;// 通過量度值獲取到對應的頻寬像數值
    /**
     * 把mMenuRightPadding(菜單距離屏幕右側的寬度)的單位轉換成像數值 第一個參數是單位轉換 第一個參數是要轉換成多少
     */
    // 把dp轉換成px
    mMenuRightPadding = (int) TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, 50, context.getResources()
                    .getDisplayMetrics());

}

/**
 * 設置子view的寬和高 設置自己的寬和高
 */
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    if (!once) {
        // 獲取界面的布局集
        mWapper = (LinearLayout) getChildAt(0);
        // 獲取到我們的mMenu菜單 元素
        mMenu = (ViewGroup) mWapper.getChildAt(0);
        // 獲取到布局文件第二個元素 就是我們的顯示布局
        mContent = (ViewGroup) mWapper.getChildAt(1);
        // 設置mMenu左邊菜單欄的寬度, 就等於屏幕寬度 - 我們設置的mMenuRightPadding(菜單距離屏幕右側的寬度)
        mMenuWidth = mMenu.getLayoutParams().width = screenWidth
                - mMenuRightPadding;
        // 只是Mcontent的寬度
        mContent.getLayoutParams().width = screenWidth;
        // mWapper.getLayoutParams().width =
        // screenWidth+mMenu.getLayoutParams().width ;
        once = true;
    }

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

/**
 * 把mMenu和mContent設置的顯示布局中 通過使用偏移量把mMenu隱藏
 */

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {

    if (changed) {
        // 設置顯示 這是把mMenu隱藏到左側
        this.scrollTo(mMenuWidth, 0);
    }
    super.onLayout(changed, l, t, r, b);
}

/**
 * 判斷鼠標/光標是否在操作,按下移動之類的
 */

@Override
public boolean onTouchEvent(MotionEvent ev) {
    //
    int action = ev.getAction();
    switch (action) {
    // 在炒作手指抬起時
    case MotionEvent.ACTION_UP:
        // 得到隱藏在左邊的寬度值
        int s =getScrollX();

        if (s >= mMenuWidth / 2) {
            //我們就隱藏mMenu
            //smoothScrollTo用這個方法有個緩慢的動畫效果ScrollTo是瞬間隱示的

            this.smoothScrollTo(mMenuWidth, 0);
        }else{
            //當隱藏部分的寬度大於mMenu的一般時我們就顯示mMenu菜單
            //把隱藏的寬度設置為0就可以了
            this.smoothScrollTo(0, 0);
        }
        return true;

    }
    return super.onTouchEvent(ev);
}

}


<?xml version="1.0" encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/img_frame_background"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:src="@drawable/img_1" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_toRightOf="@id/imageView1"
            android:text="第1個菜單項"
            android:textColor="#ffffff"
            android:textSize="26sp" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:src="@drawable/img_2" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_toRightOf="@id/imageView2"
            android:text="第2個菜單項"
            android:textColor="#ffffff"
            android:textSize="26sp" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:src="@drawable/img_3" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_toRightOf="@id/imageView3"
            android:text="第3個菜單項"
            android:textColor="#ffffff"
            android:textSize="26sp" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:src="@drawable/img_4" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_toRightOf="@id/imageView4"
            android:text="第4個菜單項"
            android:textColor="#ffffff"
            android:textSize="26sp" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView5"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:src="@drawable/img_5" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:layout_toRightOf="@id/imageView5"
            android:text="第5個菜單項"
            android:textColor="#ffffff"
            android:textSize="26sp" />
    </RelativeLayout>
</LinearLayout>


主菜單頁面


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

<com.test.cehua.sindleMenu.SindleMenu
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        <include layout="@layout/lift_menu" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/qq" >
    </LinearLayout>
</com.test.cehua.sindleMenu.SindleMenu>

最佳回答:


放上錯誤信息和源代碼才能幫你看哦

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved