自定義菜單的使用方法

自定義菜單

思路:使用新的控件,使它的行爲接近菜單的特性


菜單的特性:

顯示:按menu鍵

關閉:1) 再按menu鍵

2) 按back鍵

// 監聽back鍵,如果用戶點擊了back

// 判斷如果菜單顯示,則關閉菜單,同時,不關閉activity

3) 處於暫停狀態

4) 點擊某個菜單項

5) 點擊菜單和通知欄以外的區域(不會響應點擊事件),

1. 創建菜單:在onCreate()中添加如下代碼:
                mainLayout = findViewById(R.id.main);
                View contentView = getLayoutInflater().inflate(R.layout.optionsmenu, null);
        mOptionsMenu = new PopupWindow(contentView , LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        contentView.findViewById(R.id.TextView02).setOnClickListener(this);
        contentView.findViewById(R.id.view1).setOnClickListener(this);
            
2. 點菜單鍵顯示隱藏菜單,按back鍵隱藏菜單
      @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        switch (keyCode)
        {
        case KeyEvent.KEYCODE_BACK:
            if (mOptionsMenu.isShowing())
            {
                mOptionsMenu.dismiss();
                return false; 
            }
            break;
        case KeyEvent.KEYCODE_MENU:
            if (mOptionsMenu.isShowing())
            {
                mOptionsMenu.dismiss();
            }
            else
            {
                mOptionsMenu.showAtLocation(mainLayout, Gravity.BOTTOM, 0, 0);
            }
            break;
        default:
            break;
        }
        return super.onKeyDown(keyCode, event);
    }                   
3. 暫停狀態時隱藏菜單
        @Override
    protected void onPause()
    {
        super.onPause();
        if (mOptionsMenu.isShowing())
        {
            mOptionsMenu.dismiss();
        }
    }
4. 點擊某個菜單項 隱藏菜單 ;點擊菜單和通知欄以外的區域(不會響應點擊事件)
        @Override
    public void onClick(View v)
    {
        // 不同菜單的點擊事件
        switch (v.getId())
        {
        case R.id.TextView02:
            break;
        case R.id.view1:
                
            break;
        default:
            break;
        }
        mOptionsMenu.dismiss();
    }
5. 佈局文件兩個
    activity_main.xml佈局:
            <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/selector_btn_refresh"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="37dp"
        android:text="Button" />
        </RelativeLayout>
    optionsmenu.xml佈局:
        
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#A0F7E6C7"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" >
        <Button
            android:id="@+id/TextView02"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/selector_btn_refresh"
            android:drawableTop="@android:drawable/ic_menu_add"
            android:gravity="center_horizontal"
            android:text="設置"
            android:textAppearance="?android:attr/textAppearanceMedium" />
        <Button
            android:id="@+id/TextView01"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@android:drawable/ic_menu_add"
            android:gravity="center_horizontal"
            android:text="升級"
            android:textAppearance="?android:attr/textAppearanceMedium" />
        <Button
            android:id="@+id/TextView04"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@android:drawable/ic_menu_add"
            android:gravity="center_horizontal"
            android:text="書籤"
            android:textAppearance="?android:attr/textAppearanceMedium" />
        <Button
            android:id="@+id/TextView03"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@android:drawable/ic_menu_add"
            android:gravity="center_horizontal"
            android:text="刷新"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>
    <View
        android:id="@+id/view1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/menus"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />
        </RelativeLayout>

201450964.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章