動態改變actionbar的menu選單MenuItem的顯示
摘要 onCreateOptionsMenu(Menu menu)方法中我們能夠通過getMenuInflater().inflate(R.menu.list_option, menu);來構建一個選單,並通過 menu.findItem(R.id.menu) 獲得具體的一個選單項。但這個onCreateOptionsMenu在activity的整個週期中只被呼叫一次,之後都不
onCreateOptionsMenu(Menu menu)方法中我們能夠通過getMenuInflater().inflate(R.menu.list_option, menu);來構建一個選單,並通過
|
menu.findItem(R.id.menu) |
獲得具體的一個選單項。但這個onCreateOptionsMenu在activity的整個週期中只被呼叫一次,之後都不會變化,於是在android的較新版本里有了onPrepareOptionsMenu方法。
onCreateOptionsMenu方法是不能動態載入選單的,因為他只呼叫了一次,你可以換onPrepareOptionsMenu這個方法來獲取,他每次點選選單都會呼叫。
這就貌似可以實現動態改變選單了。
但是在下面的場景中這樣還是無能為力的:
一個記事本列表介面,當記事條數為0時,actionbar選單項只有“新建”一個選單項
當我點選新建插入了一條記事,銷燬編輯介面,重新回到列表介面,這時actionbar要求顯示“新建”和“匯出”兩個選單項。
如果按照剛剛介紹的方法根本不能實現選單的動態顯示,因為那種辦法必須要按menu按鍵,而我的需求裡面是根據內容改變,不是手動觸發。
解決的辦法是在你要更新選單項的地方加上:
mActivity.getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL);
這個是原生actionbar的解決辦法,如果你用的是 ActionBarSherlock,那麼呼叫
invalidateOptionsMenu();
相關文章
- c# winform之選單menu_menuitem_mainmenu_etcC#ORMUIAI
- javascript動態改變單選按鈕radio的選中狀態JavaScript
- jQuery 點選按鈕改變可用狀態和顯示文字jQuery
- C# Menu中共享MenuItemC#UI
- Android ActionBar中Overflow Menu(溢位選單)中的一些問題Android
- jquery實現的點選按鈕改變可用狀態和顯示文字程式碼jQuery
- vue-element 選擇框 選擇值改變,顯示不變Vue
- Android中ActionBar及Overflow的顯示Android
- mfc下改變選單的文字
- js動態控制表單的顯示和隱藏JS
- IOS 動態改變cell的高度iOS
- 動態隱藏/顯示選擇螢幕
- C# 設計時動態改變實體在PropertyGrid中顯示出來的屬性C#
- antd design Menu選單下拉回撥以及下拉選單時只能顯示一個列表,其餘關閉
- struts-menu+ibatis+少量的程式碼=通用的自定義選單和動態載入的樹BAT
- 動態改變類結構 & 動態…
- WinPE中如何改變檔案顯示圖示
- 根據使用者不同的選擇動態改變程式的標題
- WEUI picker元件無法js動態改變選項UI元件JS
- react native拖動上方顯示值,改變背景顏色的sliderReact NativeIDE
- C#中改變顯示器的解析度 (轉)C#
- Windows10系統開始選單不顯示動態磁貼資訊的設定方法Windows
- javascript動態改變css3的animationJavaScriptCSSS3
- 動態改變quartz的觸發器策略?quartz觸發器
- Tkinter (10) 選單部件 Menu
- CSS改變文字選中狀態下的顏色CSS
- 【Android】Menu不同選單的使用介紹Android
- vue中:is的用法,動態顯示需要的元件Vue元件
- 改變歸檔模式,顯示歸檔資訊模式
- Android的RadioButton隨著選中狀態的改變字型顏色也改變Android
- 用CSS來改變網頁滑鼠顯示樣式的方法CSS網頁
- 使用RecyclerView動態改變item時遇到的坑View
- javascript動態改變元素css樣式簡單介紹JavaScriptCSS
- jQuery 動態數字顯示jQuery
- alv動態顯示列
- Tree動態顯示Icon
- 手把手教你完成數字動態變化顯示效果
- 滑鼠經過顯示下拉選單