OptionsMenu(选项菜单)

安卓UI-OptionsMenu(选项菜单)

  • OptionsMenu(选项菜单):默认看不到,当用户点击Menu键时,系统才显示应用关联的菜单。需要有菜单按钮进行触发,且只能显示6个菜单项;如果菜单项超过6个,多余的菜单项会被隐藏,第六个菜单项会显示“更多”。

  • 菜单的XML资源文件,需要创建在/res/menu/目录下,并且包含menu、item、group这几个元素:
    menu:定义一个菜单资源文件根节点,在里面可以包含多个item和group元素。
    item:在菜单中创建一个选项。
    group:对菜单中的选项进行分组。

实现步骤


1、重写Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被加载时调用,只执行一次,创建后将不再被创建。
2、用add()方法添加菜单项
3、重写Activity的OptionsItemSelected(MenuItem 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="com.example.administrator.myapplication.MainActivity">
    <item
        android:id="@+id/one"
        android:orderInCategory="100"
        android:title="菜单一"
        app:showAsAction="always"
        android:icon ="@android:drawable/ic_menu_set_as"/>

    <item
        android:id="@+id/two"
        android:orderInCategory="200"
        android:title=菜单二"
        app:showAsAction="ifRoom" />


    <item
        android:id="@+id/three"
        android:orderInCategory="300"
        android:title="菜单三"
        app:showAsAction="never" />
    <item
        android:id="@+id/four"
        android:orderInCategory="400"
        android:title="菜单四"
        app:showAsAction="ifRoom" />    
    <item
        android:id="@+id/set"
        android:orderInCategory="500"
        android:title="Settings"
        app:showAsAction="ifRoom" />

</menu>

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

/*选项菜单*/
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //用于创建选项菜单的事件方法,在打开界面时会被自动调用
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      //getMenuInflater(),获取一个菜单填充器
        getMenuInflater().inflate(R.menu.menu_main, menu);
        //添加菜单项(组的ID,当前选项ID,排序编号,名称) 每一个为一个MenuItemd对象
     /*   menu.add(0, 100, 1, "菜单一");
        menu.add(0, 200, 2, "菜单二");
        menu.add(0, 300, 3, "菜单三");
        menu.add(0, 400, 4, "菜单四");
        menu.add(0, 500, 5, "Settings");*/

        return true;
    }


    //菜单选项的单击事件处理
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        switch(id)
        {       

            case R.id.one:
                Toast.makeText(this,"打开菜单一",Toast.LENGTH_SHORT).show();
                break;
            case R.id.two:
                Toast.makeText(this,"打开菜单二",Toast.LENGTH_SHORT).show();
                break;
            case R.id.three:
                Toast.makeText(this,"打开菜单三",Toast.LENGTH_SHORT).show();
            case R.id.four:
                Toast.makeText(this,"打开菜单四",Toast.LENGTH_SHORT).show();
            case R.id.set:
                Toast.makeText(this,"打开设置",Toast.LENGTH_SHORT).show();
                break;
        }

        return super.onOptionsItemSelected(item);
    }
}

运行结果

这里写图片描述

猜你喜欢

转载自blog.csdn.net/hsq54820/article/details/80774856
今日推荐