Android界面菜單(2)—選項菜單

選項菜單

        Android 4.0 系統中,Activity在建立時便會調用 onCreateOptionMenu() 函數初始化自身的菜單系統。在Activity的整個生命週期中,選項菜單是一直被重複利用的,直到 Activity被銷燬。java

        Android程序的菜單能夠在代碼中動態生成,也能夠使用XML文件製做菜單資源,而後經過 inflate() 函數映射到程序代碼中。android

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

(1)/res/menu/main.xmlide

<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.javathis

@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() 初始化菜單atom

 

@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

示例程序:spa

 

2.代碼中動態生成菜單 

MainActivity.javacode

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() 函數能夠爲菜單子項添加圖標

示例程序

相關文章
相關標籤/搜索