1. 程式人生 > >在Activity中使用菜單menu

在Activity中使用菜單menu

ble apk android round lns 目錄 重寫 定義 light

因為總是忘,所以記下來!!!

使用菜單,首先要在res目錄下創建menu目錄,並創建相應的menu資源文件(以main為例),聲明命名空間:

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

app命名空間主要規定圖標顯示規則

  <item
       android:id="@+id/test1"
       android:title="測試"
       android:orderInCategory="100"
       app:showAsAction="ifRoom"/>

    <item
        android:id="@+id/test2"
        android:title="@string/test"
        android:orderInCategory="100"
        app:showAsAction="never"/>

    <item
        android:id="@+id/test3"
        android:title="@string/test"
        android:icon="@drawable/ic_launcher_foreground"
        android:orderInCategory="100"
        app:showAsAction="always"/>

    <item
        android:id="@+id/test4"
        android:icon="@mipmap/ic_launcher"
        android:title="@string/test"
        android:orderInCategory="500"
        app:showAsAction="ifRoom"/>

  必須要有id和title,orderIncategory表示排列順序,越大在菜單欄中越靠後,若同樣大小,則按照main文件中的書寫順序。

always表示顯示在菜單欄,never表示不在菜單欄中顯示,ifRoom表示如果空間允許,則顯示在菜單欄中。

如果有不在菜單欄中直接顯示的,則在菜單欄右上角多一個三點,裏面是未直接顯示的item,此時icon已經失去意義,只會顯示title。

在菜單欄中顯示時,如果沒有定義icon,則會直接顯示title,如果title為英文,則title會全部大寫,可以在主題中設置不要大寫。

接下來需要在Activity中重寫以下方法:

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case R.id.test3:
                Toast.makeText(MainActivity.this, "3", Toast.LENGTH_SHORT).show();
                break;
            case R.id.test4:
                Toast.makeText(MainActivity.this, "4", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
        return true;
    }

  接下來運行,便可看到菜單欄了!

在Activity中使用菜單menu