Menu
任何視圖組件的創見方式都有兩種:一種通過在布局文件中聲明創建;另一種通過在程式碼中創建。菜單也不例外,可以在資源文件中聲明,也可以在程式碼中創建。
Android中菜單分為選擇菜單(Option menu)、上下文菜單(Context menu)、子菜單(Submenu),都可以在XML文件中聲明定義,在程式碼中通過MenuInflater類別使用。
菜單資源文件的定義
菜單資源文件也是一個XML文件,該菜單文件位在專案的res/menu/my_menu.xml目錄下。通過R.menu.my_menu.xml的方式引用。
典型菜單資源文件的結構是這樣的:
<menu>根標籤,在<menu>根標籤裡面巢狀放入<item>和<group>子標籤,<item>標籤可以在巢狀放入<menu>標籤形成子菜單。
<menu>標籤沒有屬性,它包含<item>和<group>子標籤。
<group>表示一個菜單組,相同菜單組可以一起設置其屬性,例如,visible、enabled、checkable等。<group>屬性如下:
- id-唯一標示該菜單組的引用id。
- menuCategory-對菜單進行分類,定義菜單的優先級,有效值為container、system、secondary和alternative。
- orderInCategory-一個分類排序整數。
- checkableBehavior-選擇行為,單選、多選還是其他。有效值為none、all、ingle。
- visible-是否可見,true或false。
- enable-是否可用,true或false。
- id-唯一標示該菜單項的引用id。
- menuCategory-菜單分類。
- orderInCategory-分類排序。
- title-菜單標題字串。
- titleCondensed-濃縮標題,適合標題太長的時候使用。
- icon-菜單圖示。
- alphabeticShortcut-字符快捷鍵。
- numericShortcut-數字快捷鍵。
- checkable-是否可選。
- checked-是否已經被選。
- visible-是否可見。
- enabled-是否可用。
菜單文件的使用
- 在專案的res/menu目錄下創建my_menu.xml菜單資源文件。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/help" android:icon="@drawable/ic_help" android:title="@string/help" /> </menu>
- 複寫Activity中的onCreateOptionsMenu()方法,在其中創建菜單。
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.game_menu, menu); return true; }
- 複寫Activity中的onOptionsItemSelected()方法,反應菜單項單擊事件。
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.new_game: newGame(); return true; case R.id.help: showHelp(); return true; default: return super.onOptionsItemSelected(item); } }
沒有留言:
張貼留言