Android開發(fā)之menu菜單
Android系統(tǒng)里面有四種類型的菜單:options menu(選項菜單),context menu(上下文菜單),sub menu(子菜單),Popup menu(彈出菜單)。
首先說 選項菜單(OptionsMenu)
一、方法介紹:
public booleanonCreateOptionsMenu(Menu menu):使用此方法調(diào)用OptionsMenu 。
public booleanonOptionsItemSelected(MenuItem item):選中菜單項后發(fā)生的動作。
public voidonOptionsMenuClosed(Menu menu):菜單關(guān)閉后發(fā)生的動作。
public booleanonPrepareOptionsMenu(Menu menu):選項菜單顯示之前onPrepareOptionsMenu方法會被調(diào)用,你可以用此方法來根據(jù)打當(dāng)時的情況調(diào)整菜單。
public booleanonMenuOpened(int featureId, Menu menu):單打開后發(fā)生的動作。
二、默認樣式
默認樣式是在屏幕底部彈出一個菜單,這個菜單我們就叫他選項菜單OptionsMenu,一般情況下,選項菜單最多顯示2排每排3個菜單項,這些菜單項有文字有圖標(biāo),也被稱作Icon Menus,如果多于6項,從第六項開始會被隱藏,在第六項會出現(xiàn)一個More里,點擊More才出現(xiàn)第六項以及以后的菜單項,這些菜單項也被稱作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,"設(shè)置").setIcon(R.drawable.setting); menu.add(0,3,3,"設(shè)置").setIcon(R.drawable.setting); menu.add(0,2,2,"下載").setIcon(R.drawable.download); }
重載onCreateOptionsMenu(Menu menu)方法,并在此方法中添加菜單項,最后返回true,如果false,菜單則不會顯示。
注意:
大部分手機上邊都會有一個“MENU”鍵,在一個應(yīng)用安裝到手機上之后,可以通過“MENU”顯示該應(yīng)用關(guān)聯(lián)的菜單。
但是,從Android 3.0開始,Android不再要求手機設(shè)備上必須提供MENU案件,雖然現(xiàn)在還有很多手機都會提供MENU按鍵,但是有一部分已經(jīng)不再提供。在這種情況下,Android推薦使用ActionBar來代替菜單。在以后的博文中我們會介紹Android對ActionBar的支持
4.2上的optionsMenu是放到actionbar上面了,必須要在xml文件中設(shè)置showAsAction="always"活著showAsAction="ifRoom"才能在actionbar上顯示。只有在actionBar上顯示的菜單,才會有圖標(biāo)。要在代碼中設(shè)置的話,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)
當(dāng)用戶長按一個控件時時,彈出的菜單我們稱為上下文菜單。我們經(jīng)常在Windows中用鼠標(biāo)右鍵單擊彈出的菜單就是上下文菜單。
1、重載Activity的onCreateContextMenu()方法,調(diào)用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()方法,響應(yīng)菜單單擊事件
@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的“文件”菜單中就有“新建”,“打開”,“關(guān)閉”等子菜單。
創(chuàng)建子菜單的方法
1、重載Activity的onCreateOptionsMenu()方法,調(diào)用Menu的addSubMenu()方法添加子菜單項
2、調(diào)用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參數(shù),可以使用其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方法添加其子菜單項。在子菜單項上不能顯示圖像,但可以在子菜單的頭部顯示圖像,不過子菜單項可以帶復(fù)選框和選項按鈕。
注意:子菜單不能再增加子菜單;
彈出菜單(Popup)
該類菜單需要和某個View綁定,當(dāng)點擊該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的點擊事件中實現(xiàn)!
2、建立PopupMenu對象,實例化傳入上下文context和綁定的View;
3、使用PopupMenu對象的getMenuInflater().inflate()把XML菜單文件壓進來,
4、使用PopupMenu對象自身的setOnMenuItemClickListener設(shè)置點擊事件;
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(); }
以上內(nèi)容就是小編給大家介紹的Android開發(fā)之menu菜單,希望大家喜歡。
相關(guān)文章
Android性能優(yōu)化之圖片大小,尺寸壓縮綜合解決方案
隨著Android手機的越來越先進,給我們開發(fā)者而言傳遞的圖片也是越來越大,這個時候我們可以對一些沒有必要原圖展示的圖片進行壓縮,這篇文章主要給大家介紹了關(guān)于Android性能優(yōu)化之圖片大小,尺寸壓縮的綜合解決方案,需要的朋友可以參考下2022-04-04Android實現(xiàn)關(guān)機與重啟的幾種方式(推薦)
這篇文章主要介紹了Android實現(xiàn)關(guān)機與重啟的幾種方式(推薦)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-07Android編程實現(xiàn)給Button添加圖片和文字的方法
這篇文章主要介紹了Android編程實現(xiàn)給Button添加圖片和文字的方法,涉及Android針對按鈕元素屬性的相關(guān)操作技巧,需要的朋友可以參考下2015-11-11Android中使用imageviewswitcher 實現(xiàn)圖片切換輪播導(dǎo)航的方法
ImageSwitcher是Android中控制圖片展示效果的一個控件。本文給大家介紹Android中使用imageviewswitcher 實現(xiàn)圖片切換輪播導(dǎo)航的方法,需要的朋友參考下吧2016-12-12Android編程仿Iphone拖動相片特效Gallery的簡單應(yīng)用示例
這篇文章主要介紹了Android編程仿Iphone拖動相片特效Gallery的簡單應(yīng)用,結(jié)合實例形式分析了Android圖形拖動特效的實現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2016-10-10使用Android Studio Gradle實現(xiàn)友盟多渠道打包
這篇文章主要介紹了使用Android Studio Gradle實現(xiàn)友盟多渠道打包,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05