Android界面菜单(2)—选项菜单

原创
2016/11/23 16:04
阅读数 295

选项菜单

        Android 4.0 系统中,Activity在创建时便会调用 onCreateOptionMenu() 函数初始化自身的菜单系统。在Activity的整个生命周期中,选项菜单是一直被重复利用的,直到 Activity被销毁。

        Android程序的菜单可以在代码中动态生成,也可以使用XML文件制作菜单资源,然后通过 inflate() 函数映射到程序代码中。

1.使用 /res/menu/main.xml 初始化 Activity 的菜单

(1)/res/menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.jhincheung.satomi.MainActivity" >

     <item 
        android:id = "@+id/main_menu_1"
        android:icon = "@drawable/pic_01"
        android:title = "File"/>

    <item 
        android:id = "@+id/main_menu_2"
        android:icon = "@drawable/pic_02"
        android:title = "Edit"/>
    <item 
        android:id = "@+id/main_menu_3"
        android:icon = "@drawable/pic_03"
        android:title = "Source"/>
    

</menu>

说明:使用XML文件描述菜单

(2)MainActivity.java

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

说明:onCreateOptionMenu() 初始化菜单

 

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {

		TextView label = (TextView)findViewById(R.id.textView_1);
		switch(item.getItemId()){
		case R.id.main_menu_1:
			label.setText("File-ID:"+item.getItemId());
			return true;
		case R.id.main_menu_2:
			label.setText("Edit-ID:"+item.getItemId());
			return true;
		case R.id.main_menu_3:
			label.setText("Source-ID:"+item.getItemId());
			return true;
			default:return false;
		}
	}
  • 说明:
  • onOptionsItemSelected() 一般用于放置菜单选择事件的响应代码
  • 通过 getItemId() 获得 MenuItem 的ID
  • onOptionsItemSelected() 的返回值表示是否需求其他事件处理函数菜单选择事件进行处理,不需要选择 true,否则选择 false

示例程序:

 

2.代码中动态生成菜单 

MainActivity.java

	final static int MENU_01 = Menu.FIRST;
	final static int MENU_02 = Menu.FIRST+1;
	final static int MENU_03 = Menu.FIRST+2;

	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
//		getMenuInflater().inflate(R.menu.main, menu);
		menu.add(0,MENU_01,0,"添加好友").setIcon(R.drawable.pic_01);
		menu.add(0,MENU_02,0,"扫一扫").setIcon(R.drawable.pic_02);
		menu.add(0,MENU_03,0,"付款").setIcon(R.drawable.pic_03);
		return true;
	}
  • 说明:
  • 一般将 ID 定义为静态变量,并使用 Menu.FIRST 定义第一个菜单子项
  • 之后的菜单项仅需在 Menu.FIRST 增加相应的数值即可
  • onCreateOptionMenu() 返回值为 true 则可显示在函数中设置的菜单
  • menu.add() 第 1 个参数 groupID 是组ID,用以批量的对菜单子项进行处理和排序
  • menu.add() 第 2个参数 itemID 是子项ID,是每一个菜单子项的唯一标识
  • menu.add() 第 3 个参数 order 是定义菜单子项在菜单中的排列顺序
  • menu.add() 第 4 个参数 title 是菜单子项所显示的标题
  • setIcon() 函数可以为菜单子项添加图标

示例程序

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部