菜單

菜單的官方文檔:
https://developer.android.google.cn/guide/topics/ui/menus.html

Android 操作系統(tǒng)中有三種基本的菜單:選項(xiàng)菜單(Options Menu)、上下文菜單(ContextMenu)和彈出菜單(PopupMenu)。對于所有的菜單資源,應(yīng)該使用 XML 菜單資源定義菜單及其所有項(xiàng)。
定義菜單的步驟如下:在 res/menu/ 目錄內(nèi)創(chuàng)建一個(gè) XML 文件,并使用<menu> <item> <group> 元素構(gòu)建菜單。

選項(xiàng)菜單的創(chuàng)建

要為 Activity 指定選項(xiàng)菜單,要重寫 onCreateOptionsMenu() 方法。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.option_menu, menu);
        return true;
    }

處理點(diǎn)擊事件
當(dāng)用戶從選項(xiàng)菜單中選擇項(xiàng)目時(shí),系統(tǒng)將調(diào)用 Activity 的 onOptionsItemSelected() 方法。

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1:
                Toast.makeText(this,"one",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item2:
                Toast.makeText(this,"two",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item3:
                Toast.makeText(this,"three",Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);    
        }
共用菜單的處理方法.png

上下文菜單的創(chuàng)建

需要在創(chuàng)建菜單的 Activity 或 Fragment 中重寫如下方法:

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu,menu);
    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item4:
                Toast.makeText(this,"one",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item5:
                Toast.makeText(this,"two",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item6:
                Toast.makeText(this,"three",Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

為要綁定上下文菜單的空間添加長按響應(yīng)屬性:

android:longClickable="true"

并使用registerForContextMenu()方法注冊

創(chuàng)建彈出菜單

Activity 可按照如下方式顯示出菜單:

   public void showPopup(View view) {
        PopupMenu popupMenu = new PopupMenu(this,view);
        MenuInflater inflater = popupMenu.getMenuInflater();
        inflater.inflate(R.menu.popup_menu,popupMenu.getMenu());
        popupMenu.show();
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.item7:
                        Toast.makeText(MainActivity.this, "one", Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.item8:
                        Toast.makeText(MainActivity.this, "two", Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.item9:
                        Toast.makeText(MainActivity.this, "three", Toast.LENGTH_SHORT).show();
                        return true;
                    default:
                        return false;
                }
            }
        });
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://developer.android.youdaxue.com/guide/topics/ui/men...
    acc8226閱讀 1,299評論 0 3
  • 上面的效果圖其實(shí)包含了兩種菜單。首先,右上角的那個(gè)加號和豎著的三點(diǎn),是Options菜單。再者,在屏幕正中的這個(gè)是...
    uncle_charlie閱讀 1,461評論 0 0
  • 1. 菜單的分類 菜單是Android應(yīng)用中非常重要且常見的組成部分,主要可以分為三類:選項(xiàng)菜單、上下文菜單/上下...
    小的橘子閱讀 9,392評論 0 7
  • 本節(jié)引言: 本章給大家?guī)淼氖茿ndroid中的Menu(菜單),而在Android中的菜單有如下幾種: Opti...
    侯蛋蛋_閱讀 9,048評論 0 10
  • 前幾天,我們?nèi)遗c先生多年未見的朋友吃飯,久別重逢,不亦樂乎!談笑間,朋友出去接電話,幾分鐘后推門而入,已是...
    桃桃3809閱讀 956評論 0 4

友情鏈接更多精彩內(nèi)容