Android中Menu菜單的使用詳解(大全)

1 在Activity中創(chuàng)建菜單

  • Activity中重寫兩個方法
 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return super.onOptionsItemSelected(item);
  }
  • 創(chuàng)建資源文件
    res目錄下創(chuàng)建menu目錄玖瘸,用來存放menu相關(guān)file
    創(chuàng)建資源文件menu_done
    每個item必須創(chuàng)建id
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <item
        android:id="@+id/menu_area"
        android:orderInCategory="100"http://數(shù)值越大級別越小,可設(shè)置來排位置
        android:title="@string/choice_area"http://文字
        app:showAsAction="always" />//顯示方式
    <item
        android:id="@+id/menu_icon"
        android:icon="@mipmap/icon_down"http://當(dāng)icon和title一起使用時,顯示圖標(biāo)
        android:orderInCategory="100"
        android:title="@string/choice_area"
        app:showAsAction="always" />
</menu>
  • app:showAsAction="" 的含義
    always 任何情況都在toolbar顯示
    ifRoom 當(dāng)·toolbar·空間足夠時全闷,顯示,不足時隱藏
    never 任何情況 不在toolbar上顯示鸠项,點擊在右上角的"更多"才能看見
    withText 圖文(title+icon)顯示
    collapseActionView 隱藏不直接顯示
    menuCategory:同種菜單項的種類饼暑。該屬性可取4個值:container、system狡忙、secondary和alternative梳虽。通過menuCategroy屬性可以控制菜單項的位置。例如將屬性設(shè)為system灾茁,表示該菜單項是系統(tǒng)菜單窜觉,應(yīng)放在其他種類菜單項的后面。
  • 在Activity中加載資源文件
 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //load the file of menu that you created
        getMenuInflater().inflate(R.menu.menu_done, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.menu_area) {
            //TODO do everything what you want
            return true;
        } else {
            return super.onOptionsItemSelected(item);
        }
    }

2 在Fragment中創(chuàng)建菜單

fragment中創(chuàng)建menu菜單步驟和在activity中創(chuàng)建步驟一致北专,也有差別

  • 重寫的方法
 //此方法與activity的有所不同
 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
          super.onCreateOptionsMenu(menu, inflater);
    }
   @Override
    public boolean onOptionsItemSelected(MenuItem item) {
         return super.onOptionsItemSelected(item);
    }
  • 創(chuàng)建menu資源同activity中一致
  • 加載資源文件
 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_area, menu);
        super.onCreateOptionsMenu(menu, inflater);

    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.menu_area || id == R.id.menu_icon) {
            //TODO 選擇區(qū)域
            item.setTitle("海淀區(qū)");

            return true;
        } else
            return super.onOptionsItemSelected(item);

    }

當(dāng)這樣寫完了去奔跑起來的時候禀挫,你會發(fā)現(xiàn)想要的根本沒有出現(xiàn),接下來逗余。特咆。。录粱。

  • 干貨來了
    fragmentonCreate()方法中添加關(guān)鍵代碼腻格,允許添加
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * 在fragment創(chuàng)建menu關(guān)鍵方法
         */
        setHasOptionsMenu(true);
    }
  • 寫在最后的話
    在上面的資源文件中定義了2個菜單項,一個顯示文字在左側(cè)啥繁,另一個顯示的圖標(biāo)在文字右側(cè)
  • 想要實現(xiàn)的效果是無論點擊哪一個都去改變左側(cè)文字
  • 實現(xiàn)方案
//在此方法中將要操作的MenuItem定義為全局變量
MenuItem item1;
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_area, menu);
        item1 = menu.findItem(R.id.menu_area);
        super.onCreateOptionsMenu(menu, inflater);

    }
   //在此方法中通過查找id菜职,以此來確定響應(yīng)事件
       @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.menu_area || id == R.id.menu_icon) {
            //TODO 選擇區(qū)域
            item.setTitle("海淀區(qū)");//這種實際上是操縱2個菜單項
            item1.setTitle("改變了");//只操作所想的,perfect
            return true;
        } else
            return super.onOptionsItemSelected(item);

    }

如果您有更好的實現(xiàn)方法或是有更完善的旗闽,請給我留言更新酬核,跪謝3分鐘...


持續(xù)更新中...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜜另,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嫡意,更是在濱河造成了極大的恐慌举瑰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔬螟,死亡現(xiàn)場離奇詭異此迅,居然都是意外死亡,警方通過查閱死者的電腦和手機旧巾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門耸序,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鲁猩,你說我怎么就攤上這事坎怪。” “怎么了廓握?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵搅窿,是天一觀的道長。 經(jīng)常有香客問我疾棵,道長戈钢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任是尔,我火速辦了婚禮殉了,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拟枚。我一直安慰自己薪铜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布恩溅。 她就那樣靜靜地躺著隔箍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脚乡。 梳的紋絲不亂的頭發(fā)上蜒滩,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音奶稠,去河邊找鬼俯艰。 笑死,一個胖子當(dāng)著我的面吹牛锌订,可吹牛的內(nèi)容都是我干的竹握。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辆飘,長吁一口氣:“原來是場噩夢啊……” “哼啦辐!你這毒婦竟也來了谓传?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤芹关,失蹤者是張志新(化名)和其女友劉穎续挟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體充边,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡庸推,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了浇冰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡聋亡,死狀恐怖肘习,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坡倔,我是刑警寧澤漂佩,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站罪塔,受9級特大地震影響投蝉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜征堪,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一瘩缆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佃蚜,春花似錦庸娱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洲脂,卻和暖如春斤儿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恐锦。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工往果, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人踩蔚。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓棚放,卻偏偏與公主長得像,于是被迫代替她去往敵國和親馅闽。 傳聞我的和親對象是個殘疾皇子飘蚯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程馍迄,因...
    小菜c閱讀 6,424評論 0 17
  • http://developer.android.youdaxue.com/guide/topics/ui/men...
    acc8226閱讀 1,190評論 0 3
  • 原文地址:http://www.android100.org/html/201606/06/241682.html...
    AFinalStone閱讀 928評論 0 1
  • ##Menu的創(chuàng)建,選擇監(jiān)聽 ``` /** * 此方法用于初始化上下文菜單 并只會在第一次初始化菜單時調(diào)用 * ...
    lucky9322閱讀 753評論 0 0
  • 一寸光陰一寸金攀圈,村金難買寸光陰。今日的時光今日過峦甩。時間對于人生來說也許并不是一個很大的概念赘来。每天有那么久,過了一天...
    星的人閱讀 231評論 0 0