Android基礎知識(二)—-Menu

來源:互聯網
上載者:User

標籤:menu   optionsmenu   contextmenu   popupmenu   

Android常用菜單:
1.OptionsMenu.
2.ContextMenu.
3.android4.0以後的PopupMenu和ActionMode.


OptionsMenu

1. 建立:
1.1 在需要設定OptionsMenu的Activity中重寫onCreateOptionsMenu(Menu 
menu)方法,並且返回true(否則將不會顯示ContextMenu)。
1.2 在onCreateOptionsMenu(Menu menu)中,向參數中的menu對象加入我們
需要設定的菜單選項。這裡加入菜單選項有兩種方法:
1)通過menu對象的add方法加入功能表按鈕。
2)通過注入res/menu中的Menu定義檔案,加入功能表按鈕。

1.3 現在我們就有了ContextMenu了。


2.屬性:
android:title 名字; 
android:id  ID值;
android:orderInCategory   menu排序;
android:showAsAction  menu顯示方式:
ifRoom :會顯示在Item中,但是如果已經有4個或者4個以上的Item時會隱藏在溢出列表中。當然個數並不僅僅局限於4個,依據螢幕的寬窄而定 
never :永遠不會顯示。只會在溢出列表中顯示,而且只顯示標題,所以在定義item的時候,最好把標題都帶上。 
always :無論是否溢出,總會顯示。 
withText :withText值示意Action bar要顯示文本標題。Action bar會儘可能的顯示這個標題,但是,如果表徵圖有效並且受到Action bar空間的限制,文本標題有可能顯示不全。 
collapseActionView(4.1及以下的模擬器用不出效果):聲明了這個操作視窗應該被摺疊到一個按鈕中,當使用者選擇這個按鈕時,這個操作視窗展開。一般與ifRoom結合使用。        
在onOptionsItemSelected(MenuItem item)中監聽到OptionsMenu點擊事件,能得到所點擊的功能表按鈕的對象MenuItem。

3.添加子功能表
方法1:我們可以在Menu的item中添加新的Menu標籤,用來添加子功能表。

方法2:在onCreateOptionsMenu(Menu menu)中通過addSubMenu向菜單加入子功能表。

public class OptionsMenuActivity extends Activity {@Overridepublic boolean onCreateOptionsMenu(Menu menu) {/*//1.通過JAVA代碼添加菜單//為menu添加選項menu.add("Search") ;//groupId 選項的組號;itemId 選項的id; order 排列的序號;menu.add(0, 5, 0, "Setting") ;//為menu添加子功能表SubMenu more = menu.addSubMenu("More") ;more.add("more1") ;more.add("more2") ;*///2.通過XML資源檔添加菜單getMenuInflater().inflate(R.menu.menu, menu) ;System.out.println("onCreateOptionsMenu");//返回true代表顯示OptionsMenu,返回falseOptionsMenu將無法顯示。return true ;}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {System.out.println("onPrepareOptionsMenu");//刪除Search選項menu.removeItem(R.id.menu_search) ;return super.onPrepareOptionsMenu(menu);}/** * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem) */@Overridepublic boolean onOptionsItemSelected(MenuItem item) {//響應點擊事件String title = (String) item.getTitle() ;if("Search".equals(title)){}else if("Setting".equals(title)){}else if("More".equals(title)){}System.out.println("MenuItem = "+title);//這裡返回true或false,我們都能響應到。//用於表示我們處理掉這個事件(true),false代表我們不處理。return false ;}}

TIPS:
他們的點擊監聽都在onOptionsItemSelected中;
onCreateOptionsMenu只會調用一次,只有在建立的時候會調用。需要調用 onPrepareOptionsMenu()方法,在這裡修改OptionMenu的狀態與按鈕;
在4.0以上,我們必須先調用invalidateOptionsMenu(),才能調用onPrepareOptionsMenu()。


Float Contextual Menu
這是一個浮動菜單,需要長按觸發。
1.建立:
1.1 建立Menu我們一樣需要在Activity中實現一個方法:
onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo),並在其中建立菜單。
1.2 觸發方法
registerForContextMenu(View view)將這個菜單綁定到一個View上去。
onContextItemSelected(MenuItem item)。


PopupMenu
提供了一個類似於Window下滑鼠右鍵菜單的操作方式
1. 建立對象:
PopupMenu pMenu = new PopupMenu(this, view);
2. 注入介面:
pMenu.getMenuInflater().inflate(R.menu.menu, pMenu.getMenu());
3. 添加監聽
pMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
});
4. 顯示:pMenu.show();

5. 手動取消: pMenu.dismiss() ;



Android基礎知識(二)—-Menu

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.