android菜单(menu)资源


 一、 菜单资源通常放在res/menu目录下,菜单资源是的根元素通常是<menu></menu>标记,在该标记下可以包含以下两个元素。

1.<item></item>标记:用于定义菜单项。

2.<group></group>标记:用于将多个<item></item>标记定义的菜单包装成一个菜单组。

在menu_main.xml的具体代码如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
    <item android:id="@+id/item1" android:title="更换背景" android:alphabeticShortcut="g"></item>
    <item android:id="@+id/item2" android:title="编辑组件" android:alphabeticShortcut="e"></item>
    <item android:id="@+id/item3" android:title="恢复默认" android:alphabeticShortcut="r"></item>
    <group android:id="@+id/setting">
        <item android:id="@+id/sound" android:title="使用背景"></item>
        <item android:id="@+id/video" android:title="背景音乐"></item>
    </group>
</menu>

  二、使用菜单资源:

1.选项菜单(Option Menu)

当用户单击菜单按钮时,弹出的菜单就是选项菜单。使用菜单资源创建选项菜单的具体步骤如下。

(1)重写Activity中的onCreateOptionMenu()方法。在该方法中,首先创建衣蛾用于解析菜单资源文件的MenuInflater对象,然后调用该对象的inflate()方法解析一个菜单资源文件,并把解析后的菜单保存在menu中,关键代码如下:

public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
(2)重写onOptionsItemSelected(),用于当菜单项被选中的做出相应的处理。

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement


        Toast.makeText(MainActivity.this,item.getTitle(),Toast.LENGTH_SHORT).show();

        return super.onOptionsItemSelected(item);
    }

2.上下文菜单(Content Menu)

  当用户长时间按键不放是,弹出的菜单就是上下文菜单。步骤:

(1)在Activity的onCreate()方法注册上下文菜单

private TextView testMenu=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        testMenu= (TextView) findViewById(R.id.testMenu);
        registerForContextMenu(testMenu); //为文本框注册上下文菜单

    }
(2)重写Activity中的onCreateContextMenu()方法。在该方法中,首先创建一个用于解析菜单资源文件的MenuInflater,然后调用该对象的inflate()方法解析一个菜单资源文件,并把解析出来的惨淡保存在menu中,最后为菜单设置图标和标题。关键代码如下:

 @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);


        MenuInflater inflater=new MenuInflater(this);  //实例化一个MenuInflater对象
        inflater.inflate(R.menu.menu_main,menu);       //解析菜单文件
        menu.setHeaderIcon(R.drawable.ic_launcher);    //为菜单头设置图标
        menu.setHeaderTitle("请选择");                  //为菜单头设置图标
    }


(3)重写onCintextItemSelected()方法,用于当菜单项被选择时做出相应的处理。

 @Override
    public boolean onContextItemSelected(MenuItem item) {
        Toast.makeText(MainActivity.this,item.getTitle(),Toast.LENGTH_SHORT).show();
        return super.onContextItemSelected(item);

    }



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。