Android-Menu的基本使用

所謂Menu有什么用的?當然是為了節(jié)省界面的空間,讓屏幕的空間得到合理的利用,Menu有兩種,一種是options menu,一種是Context Menu。
一、options Menu
1、在res目錄下創(chuàng)建menu文件夾,然后在該文件夾中創(chuàng)建一個新的Menu Resource File,比如叫main。
2、在main.xml中書寫所需要的代碼。
(1)每一個Menu的菜單項,都使用一個<item>標簽來包裹。
(2)通過android:id來給每一個菜單項指定一個唯一的標識符
(3)通過android:titile來個每一個菜單項指定一個名稱

<item android:id="@+id/item_add"
    android:title="@string/str_addItem"/>

<item android:id="@+id/item_delete"
    android:title="@string/str_deleteItem"/>

3、到對應的Activity中重寫相對應的方法。
(1)重寫onCreateOptionsMenu()方法。

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

在該方法中通過getMenuInflater()方法獲得MenuInflater對象,然后再調用inflate()方法來給當先的Activity創(chuàng)建菜單。其中,inflate()方法傳入兩個參數,第一個是我們要用來創(chuàng)建菜單的資源文件,比如前面的main.xml,第二個是用于制動菜單創(chuàng)建到哪一個Menu對象中,這里我們可以直接使用onCreateOptionsMenu()方法中傳入的menu參數。最后,給這個方法返回true表示允許菜單顯示,如果返回false,則創(chuàng)建的菜單無法顯示。
(2)重寫onOptionsItemSelected()方法

public boolean onOptionsItemSelected(@NonNull MenuItem item) {

    switch (item.getItemId()){
        case R.id.item_add:
            Toast.makeText(this, "You Click Add Item!!", Toast.LENGTH_SHORT).show();
            break;
        case R.id.item_delete:
            Toast.makeText(this, "You Click Delete Item!!", Toast.LENGTH_SHORT).show();
            break;
        default:
            break;
    }
    return true;
}

最后,效果如下:


menu1.png
menu2.png
menu3.png

二、Context Menu
首先,第1,2步與options Menu一樣,先創(chuàng)建以及編寫資源文件。

3、到對應的Activity中去重寫相對應的方法和邏輯。
(1)重寫onCreateContextMenu()方法。
與options Menu一樣,調用getMenuInflater()方法中的inflate()方法,inflate()中,同樣需要傳入2個參數,一個是要以哪個資源文件為模板去創(chuàng)建menu,另一個是把menu創(chuàng)建到哪里去。與options Menu不一樣的是,Context Menu不需要return true。

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        getMenuInflater().inflate(R.menu.context_menu,menu);
    }

(2)重寫onContextItemSelected()的方法

@Override
    public boolean onContextItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId()){
            case R.id.item_hello:
                Toast.makeText(this, "You choose Hello", Toast.LENGTH_SHORT).show();
                break;
            case R.id.item_goodBye:
                Toast.makeText(this, "You choose goodBye", Toast.LENGTH_SHORT).show();
        }
        return true;
    }

(3)在onStart()方法中調用registerForContextMenu()

@Override
    protected void onStart() {
        registerForContextMenu(mContextMenuButton);
        super.onStart();
    }

(4)在onStop()中調用unregisterForContextMenu()

@Override
    protected void onStop() {
        unregisterForContextMenu(mContextMenuButton);
        super.onStop();
    }

(5)在需要顯示出Context menu的控件中調用openContextMenu()

mContextMenuButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openContextMenu(mContextMenuButton);
            }
        });

4、效果展示


context menu1.png

點擊按鈕出現Cntext Menu

context Menu2.png
context menu 3.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 使用方法:首先在 res 目錄下新建一個 menu文件夾,在文件夾下再建一個名叫 main 的菜單文件。 main...
    i小灰閱讀 781評論 0 1
  • 使用方法:首先在 res 目錄下新建一個 menu文件夾,在文件夾下再建一個名叫 main 的菜單文件。 main...
    因為我的心閱讀 416評論 0 0
  • 在活動中使用Menu 步驟: 在res目錄下新建一個menu文件夾,接著在該文件夾下再新建一個名叫main的菜單文...
    Yolyn閱讀 385評論 0 0
  • 前言 星光不問趕路人,時間不負有心人。 選項菜單和子菜單 Android應用中的菜單默認是看不見的,只有當用戶按下...
    olaH閱讀 756評論 0 3
  • 1、res -> New -> Directory,輸入名字menu創(chuàng)建文件夾,右鍵menu -> New -> ...
    cjjjjjj閱讀 926評論 0 0

友情鏈接更多精彩內容