前言:
在手機app中,有時候我們需要設置大量的菜單選項,如果直接在UI中顯示出來會佔用原本就不大的屏幕空間,導致app可用於顯示信息的空間減少,降低了用戶體驗。這時,就需要用到menu控件了。menu控件用於顯示應用程序的自定義菜單選項,一般位於app頂欄的右上角,在用戶不需要使用到菜單選項的時候menu處於關閉狀態,只會佔用一個圖標的空間,極大地提高了屏幕利用率和用戶體驗。
步驟:
下面我來講解一下如何創建應用程序的menu。
1、在res目錄下新建一個文件夾,命名爲menu
2、右鍵menu文件夾 - > New - > Menu resource file ,命名爲main,點擊確定後會生成main.xml文件。
3、在main.xml文件中編寫代碼:
<item>標籤是用來創建菜單項的
4、然後回到Activity,並重寫onCreateOptionsMenu()方法(重寫方法快捷鍵:Ctrl + O)
並在該方法中編寫如下代碼:
onCreateOptionsMenu()方法用於創建Menu:
該方法在Activity創建的時候執行,一般只運行一次。getMenuInflater()方法獲取MenuInflater對象,再調用他的inflate()方法來創建Menu。inflate方法需要接收兩個參數,第一個參數是讓我們指定它使用哪個資源文件進行menu的創建,這裏我們指定上面創建的main.xml文件,第二個參數則用於指定我們的菜單項將添加到哪個menu對象中,這裏直接使用傳進來的menu對象。最後該方法的返回值表示是否允許該菜單顯示出來,返回true則爲顯示菜單。
5、目前還只是將菜單顯示了出來,這時候點擊菜單項是沒有反應的,所以我們還需要在Activity中定義菜單響應事件:在Activity中重寫onOptionsItemSelected()方法。設置爲點擊菜單項後會彈出Toast。
onOptionsItemSelected()方法用於設置點擊各個菜單項對應Activity做出什麼操作。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "You Click Add!", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You Click Remove!", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
大功告成!
下面看下效果
相關知識:
<item>標籤常見屬性:
android:id:菜單項的唯一標識
android:title:菜單中菜單項的標題
android:icon:菜單項的圖標
android:showAsAction:指定菜單項的顯示方式。常用的有always、ifRoom、withText和never。多個屬性值可以同時使用,但是需要中間用|隔開。
屬性值 | 作用 |
always | 菜單項一直顯示在ActionBar上,而不會被收納到overflow菜單 |
ifRoom | 如果ActionBar上空間足夠的話會顯示在上面,否則會被收納到overflow菜單 |
withText | 該菜單項的圖標和標題會一起顯示出來 |
never | 菜單項只會顯示在overflow菜單中 |