Android Menu功能菜单

本文实现功能

A)为Android创建菜单

B)解决Android4.0菜单图片无法显示问题

1)效果图如下

Android Menu功能菜单_第1张图片

2)实现代码如下

package com.example.androidapp;

import java.lang.reflect.Method;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;

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) {
		/* 利用反射机制调用MenuBuilder的setOptionalIconsVisible方法设置mOptionalIconsVisible为true, 
         * 给菜单设置图标时才可见 
         */  
        setIconEnable(menu, true);  
		menu.add(0, 0, 0, "关于").setIcon(R.drawable.ic_launcher);
		menu.add(0, 1, 1, "退出").setIcon(R.drawable.ic_launcher);
		return super.onCreateOptionsMenu(menu);
	}
	//enable为true时,菜单添加图标有效,enable为false时无效。4.0系统默认无效  
    private void setIconEnable(Menu menu, boolean enable)  
    {  
        try{  
            Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");  
            Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);  
            m.setAccessible(true); 
            //MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)  
            m.invoke(menu, enable);  
        } catch (Exception e){  
            e.printStackTrace();  
        }  
    }  
	/*选择菜单触发事件*/
	public boolean onOptionsItemSelected(MenuItem item){
		super.onOptionsItemSelected(item);
		switch(item.getItemId()){
			case 0:
				break;
			case 1:
				break;
		}
		return true;
	}
}


你可能感兴趣的:(android,menu)