Android開發之menu菜單_Android

來源:互聯網
上載者:User

 Android系統裡面有四種類型的菜單:options menu(選項菜單),context menu(操作功能表),sub menu(子功能表),Popup menu(快顯功能表)。

首先說 選項菜單(OptionsMenu)

一、方法介紹

       public booleanonCreateOptionsMenu(Menu menu):使用此方法調用OptionsMenu 。

       public booleanonOptionsItemSelected(MenuItem item):選中功能表項目後發生的動作。

       public voidonOptionsMenuClosed(Menu menu):菜單關閉後發生的動作。

       public booleanonPrepareOptionsMenu(Menu menu):選項菜單顯示之前onPrepareOptionsMenu方法會被調用,你可以用此方法來根據打當時的情況調整菜單。

      public booleanonMenuOpened(int featureId, Menu menu):單開啟後發生的動作。

二、預設樣式

  預設樣式是在螢幕底部彈出一個菜單,這個菜單我們就叫他選項菜單OptionsMenu,一般情況下,選項菜單最多顯示2排每排3個功能表項目,這些功能表項目有文字有表徵圖,也被稱作Icon Menus,如果多於6項,從第六項開始會被隱藏,在第六項會出現一個More裡,點擊More才出現第六項以及以後的功能表項目,這些功能表項目也被稱作Expanded Menus。下面介紹。

1.重載onCreateOptionsMenu(Menu menu)方法

@Override public boolean onCreateOptionsMenu(Menu menu) {  // Inflate the menu; this adds items to the action bar if it is present.  //getMenuInflater().inflate(R.menu.main, menu);  menu.add(0,1,1,"設定").setIcon(R.drawable.setting);  menu.add(0,3,3,"設定").setIcon(R.drawable.setting);  menu.add(0,2,2,"下載").setIcon(R.drawable.download);  } 

重載onCreateOptionsMenu(Menu menu)方法,並在此方法中添加功能表項目,最後返回true,如果false,菜單則不會顯示。

注意:

 大部分手機上邊都會有一個“MENU”鍵,在一個應用安裝到手機上之後,可以通過“MENU”顯示該應用關聯的菜單。

 但是,從Android 3.0開始,Android不再要求手機裝置上必須提供MENU案例,雖然現在還有很多手機都會提供MENU按鍵,但是有一部分已經不再提供。在這種情況下,Android推薦使用ActionBar來代替菜單。在以後的博文中我們會介紹Android對ActionBar的支援

4.2上的optionsMenu是放到actionbar上面了,必須要在xml檔案中設定showAsAction="always"活著showAsAction="ifRoom"才能在actionbar上顯示。只有在actionBar上顯示的菜單,才會有表徵圖。要在代碼中設定的話,menu.findItem(id).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)

2.重載onOptionsItemSelected(MenuItem item)方法為捕捉功能表項目事件

@Override public boolean onOptionsItemSelected(MenuItem item) {  // TODO Auto-generated method stub  if (item.getGroupId() == 0 &&item.getItemId() == 1)  {   Intent intent = new Intent(this, SecondActivity.class);   startActivity(intent);  }  else  {   Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();  }  return super.onOptionsItemSelected(item); } 

操作功能表(ContextMenu)

當使用者長按一個控制項時時,彈出的菜單我們稱為操作功能表。我們經常在Windows中用滑鼠右鍵單擊彈出的菜單就是操作功能表。

1、重載Activity的onCreateContextMenu()方法,調用Menu的add方法添加功能表項目MenuItem

@Override public void onCreateContextMenu(ContextMenu menu, View v,   ContextMenuInfo menuInfo) {   menu.add(0, 1, 0, "紅色背景");   menu.add(0, 2, 0, "綠色背景");   menu.add(1, 3, 0, "白色背景");  // TODO Auto-generated method stub  super.onCreateContextMenu(menu, v, menuInfo); } 

2、重載onContextItemSelected()方法,響應菜單單擊事件

@Override public boolean onContextItemSelected(MenuItem item) {  // TODO Auto-generated method stub   switch(item.getItemId()) {    case 1:     myText.setBackgroundColor(Color.RED);    break;    case 2:     myText.setBackgroundColor(Color.GREEN);    break;    case 3:     myText.setBackgroundColor(Color.WHITE);    break;    }  return true; } 

3、重載registerForContextMenu()方法,為視圖註冊操作功能表

 private TextView myText; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  myText = (TextView)findViewById(R.id.mytext);  registerForContextMenu(myText); } 

子功能表(SubMenu) 

子功能表就是將相同功能的分組進行多級顯示的一種菜單,比如,Windows的[檔案] 功能表中就有“建立”,“開啟”,“關閉”等子功能表。

     建立子功能表的方法

1、重載Activity的onCreateOptionsMenu()方法,調用Menu的addSubMenu()方法添加子功能表項

2、調用SubMenu的add()飯飯,添加子功能表項

@Override public boolean onCreateOptionsMenu(Menu menu) {  // Inflate the menu; this adds items to the action bar if it is present.  SubMenu subMenu = menu.addSubMenu(0, 4, 4, "登入/註冊");  subMenu.add(1, 1, 1, "登入");  subMenu.add(1, 2, 2, "註冊");  return true; } 

3、重載onOptionsItemSelected(MenuItem item)方法為捕捉功能表項目事件

這個方法有一個MenuItem參數,可以使用其getTitle和getItemId方法來判斷單擊的是哪個功能表項目

public boolean onOptionsItemSelected(MenuItem item) {  // TODO Auto-generated method stub  if(item.getTitle().equals("登入"))  {   Log.e("action:","點擊了 註冊/登入");  }  return super.onOptionsItemSelected(item); } 

 SubMenu是Menu的子介面,添加SubMenu後,可以通過SubMenu.add方法添加其子功能表項。在子功能表項上不能顯示映像,但可以在子功能表的頭部顯示映像,不過子功能表項可以帶複選框和選項按鈕。

注意:子功能表不能再增加子功能表;

快顯功能表(Popup)

   該類菜單需要和某個View綁定,當點擊該View時在該View的上面或下面(視螢幕空間而定)快顯功能表。

使用方法:

1、建立XML菜單資源檔;

popup.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >  <item   android:id="@+id/action_edit"   android:orderInCategory="100"   android:showAsAction="never"   android:title="edit"/>   <item   android:id="@+id/action_share"   android:orderInCategory="100"   android:showAsAction="never"   android:title="popup"/> </menu> 

2~5步均可在綁定View的點擊事件中實現!

2、建立PopupMenu對象,執行個體化傳入上下文context和綁定的View;

3、使用PopupMenu對象的getMenuInflater().inflate()把XML菜單檔案壓進來,

4、使用PopupMenu對象自身的setOnMenuItemClickListener設定點擊事件;

5、使用PopupMenu對象自身的show顯示快顯功能表。

public void showPopuMenu(View v) {  PopupMenu popup = new PopupMenu(MainActivity.this, v);  MenuInflater inflater = popup.getMenuInflater();  inflater.inflate(R.menu.popup, popup.getMenu());  popup.show();  } 

以上內容就是小編給大家介紹的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.