android中常用菜单(menu)的基本知识

来源:互联网 发布:print is python 编辑:程序博客网 时间:2024/06/04 01:06

(一)选项菜单

1、简单的创建菜单:

@Override    public boolean onCreateOptionsMenu(Menu menu) {        super.onCreateOptionsMenu(menu);        // 添加菜单        menu.add("菜单选项1");        /*         * pram1:组号 pram2:唯一的ID号 pram3:排序号 pram4:标题         */        menu.add(1, Menu.FIRST, Menu.FIRST, "菜单选项2");        // 希望显示菜单就返回true        return true;    }

2、菜单的分组以及简单属性:

@Override    public boolean onCreateOptionsMenu(Menu menu) {        super.onCreateOptionsMenu(menu);        int group1 = 1;        int group2 = 2;        menu.add(group1, 1, 1, "item1");        menu.add(group1, 2, 2, "item2");        menu.add(group2, 3, 3, "item3");        menu.add(group2, 4, 4, "item4");        // menu.removeGroup(group1);//删除一个组        // menu.setGroupVisible(group1, false);//设置可见性        // menu.setGroupEnabled(group2, false);//设置是否可点        // menu.setGroupCheckable(group2, true, t);//设置一组菜单的勾选情况        return true;    }

3、响应菜单

一、通过onOptionsItemSelected方法

@Override    public boolean onOptionsItemSelected(MenuItem item) {        // 响应每个菜单项(通过菜单项的ID)        switch (item.getItemId()) {        case 1:            // do something here            break;        case 2:            // do something here            break;        case 3:            // do something here            break;        case 4:            Toast.makeText(this, "hello", 0).show();            break;        default:            // 对没有处理的事件,交给父类来处理            return super.onOptionsItemSelected(item);        }         //返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了        return true;    }

二、通过监听

//第一步:创建监听器类class MyMenuItemClickListener implements OnMenuItemClickListener {    @Override    publicboolean onMenuItemClick(MenuItem item) {        // do something here...        return   true;    //finish handling    }}//第二步:为菜单项注册监听器menuItem.setOnMenuItemClickListener(new MyMenuItemClickListener());


三、通过Intent

 

(二)子菜单subMenu

注意:Menu可以包含多个SubMenu及menuItem,SubMenu可以包含多个MenuItem,,但是SubMenu不能包含SubMenu。

@Override    public boolean onCreateOptionsMenu(Menu menu) {        //一个menu中可以添加多个子菜单        SubMenu subMenu=menu.addSubMenu(1,1, 0, "子菜单");                //在子菜单中添加多个菜单选项        MenuItem menuItem1=subMenu.add(1, 1, 0, "菜单选项1");        subMenu.add(1, 2, 1,"菜单选项2");        subMenu.add(1, 3, 2,"菜单选项3");        subMenu.add(1, 4, 3,"菜单选项4");                //子菜单不支持显示图标,尽管这样设置不会报错        subMenu.setIcon(R.drawable.ic_launcher);                //设置菜单选项的图标        menuItem1.setIcon(R.drawable.ic_launcher);        return true;    }

(三)上下文菜单ContextMenu

package com.zzw.contextMenu;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.MenuItem;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends Activity {    private static final String TAG = "MainActivity";    ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        Log.d(TAG, "onCreate");        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listView);        simpleShowList();        //1.在activity的onCreate方法中为一个view注册上下文菜单        this.registerForContextMenu(listView);    }        //2.在onCreateContextMenu中生成上下文菜单。    @Override    public void onCreateContextMenu(ContextMenu menu, View v,            ContextMenuInfo menuInfo) {        Log.d(TAG, "onCreateContextMenu_start");        menu.setHeaderTitle("上下文菜单标题");        menu.add(0, 1, 0, "选项1");        menu.add(0, 2, 0, "选项2");        menu.add(0, 3, 0, "选项3");                Log.d(TAG, "onCreateContextMenu_stop");    }        //3.在onContextItemSelected中响应上下文菜单项。    @Override    public boolean onContextItemSelected(MenuItem item) {        Log.d(TAG, "onContextItemSelected_start");        int item_id = item.getItemId();        switch (item_id) {        case 1:            Toast.makeText(this, "我是上下文菜单选项1", 0).show();            break;        case 2:            break;        case 3:            break;        default:            return super.onContextItemSelected(item);        }        Log.d(TAG, "onContextItemSelected_stop");        return true;    }    private void simpleShowList() {        Log.d(TAG, "simpleShowList_start");        String[] showList = { "显示1", "显示2", "显示3", "显示4" };        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                android.R.layout.simple_expandable_list_item_1, showList);        listView.setAdapter(adapter);        Log.d(TAG, "simpleShowList_stop");    }}


(四)通过XML文件添加菜单

1.在res文件下创建menu文件夹,一般默认有的,在里面new出一个Android xml File来编辑自己的菜单

2.编辑自己的xml

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" >    <!-- group是分组 -->    <group android:id="@+id/group1" >        <!-- item是一个菜单选项 -->        <item            android:id="@+id/item1"            android:title="菜单选项1(子菜单)">            <!-- 在一个item中添加一个menu就是子菜单 -->            <menu>                <!-- 子菜单中的菜单选项 -->                <item                     android:icon="@drawable/ic_launcher"                    android:id="@+id/item1_1"                    android:title="子菜单内选项1"/>                <item                    android:id="@+id/item1_2"                    android:title="子菜单内选项2"/>            </menu>        </item>        <item            android:id="@+id/item2"            android:title="菜单选项2">        </item>    </group>    <group android:id="@+id/group2" >        <item            android:id="@+id/item3"            android:title="菜单选项4">        </item>        <item            android:id="@+id/item4"            android:title="菜单选项5">        </item>    </group></menu>

3.在activity中获取:

@Override    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater in = getMenuInflater();        in.inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {        case R.id.item1:           13             break;        case R.id.item2:            break;                default:            return super.onOptionsItemSelected(item);        }        return true;    }


一些基本的属性:

设置菜单icon

1 <item 2         android:id="@+id/item1"3         android:title="菜单选项1"4         android:icon="@drawable/ic_launcher"5         />
<!-- checkableBehavior设置可选 -->    <group android:id="@+id/group1"        android:checkableBehavior="all" >        <!-- checked设置特定菜单项(被勾中) -->        <item            android:id="@+id/item1"            android:title="菜单选项1"            >        </item>        <item            android:id="@+id/item2"            android:checked="true"            android:title="菜单选项2">        </item>    </group>


设置菜单可用不可用android:enable

<group android:id="@+id/group1">        <item            android:id="@+id/item1"            android:title="菜单选项1"            android:enabled="true"            >        </item>        <item            android:id="@+id/item2"            android:title="菜单选项2"             android:enabled="false">        </item>    </group>

设置菜单选项是否可见android:visible

<group android:id="@+id/group1">        <item            android:id="@+id/item1"            android:title="菜单选项1"            android:visible="true"            >        </item>        <item            android:id="@+id/item2"            android:title="菜单选项2"             android:visible="false">        </item>    </group>



0 0
原创粉丝点击