Menu简单应用

在onCreateOptionsMenu(Menu menu)方法里添加菜单项

 menu.add(Menu.NONE, Menu.FIRST + 1, 1, "1").setIcon( android.R.drawable.ic_input_add);

参数分别是分组,id,显示的位置,显示的名称           然后设置图标。

设置点击事件

public boolean onOptionsItemSelected(MenuItem item) {
根据id来进行判断 

 switch (item.getItemId()) {
  case Menu.FIRST + 1:
   Toast.makeText(this, "1", 1000).show();
   break;

}

关闭菜单时调用

public void onOptionsMenuClosed(Menu menu) {
  Toast.makeText(this, "close", 1000).show();
 }

还有一种方法是在menu文件下写xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/item1"
        android:title="添加"
        android:icon="@android:drawable/ic_menu_add"/>
    <item
        android:id="@+id/item2"
        android:title="保存"
        android:icon="@android:drawable/ic_menu_save"/>

</menu>

菜单的点击也用以前的方式

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        
        switch (item.getItemId()) {
        case R.id.item1:
            Toast.makeText(this, "添加", 1000).show();
            break;
        case R.id.item2:
            Toast.makeText(this, "保存", 1000).show();
            break;

        default:
            break;
        }
        return false;
    }

上下文菜单

public class MainActivity extends Activity {
    private ListView lv;
    private String[] data = { "大连", "长春", "沈阳" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        lv = new ListView(this);
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, data));
        setContentView(lv);
        registerForContextMenu(lv);//注册上下文菜单
    }
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("信息");
        menu.add(Menu.NONE, Menu.FIRST+1, 1, "ok");
        menu.add(Menu.NONE, Menu.FIRST+2, 2, "no");
    }
    

 上下文菜单实现的第二种方法,xml文件引用

package com.example.menudemo3;

import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private ListView lv;
    private String[] data = { "大连", "长春", "沈阳" };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        lv = new ListView(this);
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, data));
        setContentView(lv);
        registerForContextMenu(lv);//注册上下文菜单
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("添加信息");
        getMenuInflater().inflate(R.menu.contextmenu, menu);
    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case R.id.item1:
            Toast.makeText(this, "ok", 1000).show();
            break;

        
        }
        return super.onContextItemSelected(item);
    }

}

 子菜单

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        SubMenu a = menu.addSubMenu("one");
        SubMenu b = menu.addSubMenu("two");
        a.add(menu.NONE, menu.FIRST+1, 1, "on");
        a.add(menu.NONE, menu.FIRST+2, 2, "ono");
        b.add(menu.NONE, menu.FIRST+3, 3, "ono");
        b.add(menu.NONE, menu.FIRST+4, 4, "on");
        return true;
    }

 子菜单通过xml文件获取

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        SubMenu a = menu.addSubMenu("one");
        SubMenu b = menu.addSubMenu("two");
        getMenuInflater().inflate(R.menu.one, a);
        getMenuInflater().inflate(R.menu.two, b);
        
        return true;
    }
原文地址:https://www.cnblogs.com/84126858jmz/p/4897740.html