亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

安卓開發筆記——Menu菜單組件(選項菜單,上下文菜單,子菜單)

2019-11-14 21:06:32
字體:
來源:轉載
供稿:網友
安卓開發筆記——Menu菜單組件(選項菜單,上下文菜單,子菜單)

菜單是用戶界面中最常見的元素之一,使用非常頻繁,在Android中,菜單被分為如下三種,選項菜單(OptionsMenu)、上下文菜單(ContextMenu)和子菜單(SubMenu)。

菜單的實現方式有2種:一種是通過布局文件xml生成菜單,另一種是通過代碼生成。

三種菜單內容有點多,不過大體相似,一次性講完吧,本人偏好代碼動態生成,下面就以代碼為例。

1、選項菜單(OptionsMenu)

先來看下選項菜單的效果圖:

在一個Activity界面中點擊手機Menu鍵,在屏幕下方彈出的菜單就叫選項菜單(OptionsMenu)。

創建一個選項菜單的步驟:1、覆寫Activity的onCreateOptionsMenu(Menu menu)函數2、調用menu的add()方法添加菜單項(MenuItem),可以調用MenuItem的setIcon()方法來為菜單設置圖標3、當菜單項()被選擇時,我們可以通過覆蓋Activity的onOptionsItemSeleted()方法來響應事件

先來了解下主要的方法:

1   public boolean onCreateOptionsMenu(Menu menu)://使用此方法調用OptionsMenu 。2 3   public boolean onOptionsItemSelected(MenuItem item)://選中菜單項后發生的動作。4 5   public void onOptionsMenuClosed(Menu menu): //菜單關閉后發生的動作。6 7   public boolean onPRepareOptionsMenu(Menu menu)://選項菜單顯示之前onPrepareOptionsMenu方法會被調用,你可以用此方法來根據打當時的情況調整菜單。8 9   public boolean onMenuOpened(int featureId, Menu menu)://單打開后發生的動作。

下面來看個小Demo,注釋很全。

 1 package com.example.menutest; 2  3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.widget.Toast; 9 10 /**11  * 12  * @author Balla_兔子13  * 用代碼動態生成菜單(選項菜單)14  *15  */16 public class MainActivity extends Activity {17 18     @Override19     protected void onCreate(Bundle savedInstanceState) {20         super.onCreate(savedInstanceState);21         setContentView(R.layout.activity_main);22     }23     24     @Override25     //onCreateOptionsMenu()此方法只會調用一次,即第一次顯示的時候會調用.26     public boolean onCreateOptionsMenu(Menu menu) {27 //        MenuItem item1=menu.add(1, 1, 1, "第一個選項菜單");28 //        item1.setTitle("第一個選項菜單");29 //        item1.setIcon(R.drawable.ic_launcher);30         menu.add(1, 1, 1, "第一個選項菜單");31         menu.add(1, 2, 1, "第二個選項菜單");32         menu.add(1, 3, 1, "第三個選項菜單");33         menu.add(1, 4, 1, "第四個選項菜單");        34         return super.onCreateOptionsMenu(menu);35     }36     37     @Override38     //如果需要更新菜單項.可以在onPrepareOptionsMenu()方法中操作.39     public boolean onPrepareOptionsMenu(Menu menu) {40         Toast.makeText(this, "菜單顯示器前執行的方法", Toast.LENGTH_SHORT).show();41         return super.onPrepareOptionsMenu(menu);42     }43     44     @Override45     public void onOptionsMenuClosed(Menu menu) {46         Toast.makeText(this, "菜單關閉后執行的方法", Toast.LENGTH_SHORT).show();47         super.onOptionsMenuClosed(menu);48     }49     50     @Override51     //當菜單被選擇的時候,在OnOptionsItemSelected()方法中實現.52     public boolean onOptionsItemSelected(MenuItem item) {53         switch(item.getItemId()){//獲取菜單id54         case 1:55             //可以通過Intent跳轉界面56             Intent intent=new Intent(MainActivity.this, HelloWorld.class);57             item.setIntent(intent);58             break;59         case 2:60             Toast.makeText(this, "第二個選項菜單被點擊", Toast.LENGTH_SHORT).show();61             break;62         case 3:63             Toast.makeText(this, "第三個選項菜單被點擊", Toast.LENGTH_SHORT).show();64             break;65         case 4:66             Toast.makeText(this, "第四個選項菜單被點擊", Toast.LENGTH_SHORT).show();67             break;68         }69         return super.onOptionsItemSelected(item);70     }71 72 }

上面例子中,在創建菜單方法onCreateOptionsMenu()中有個add方法,它的返回值是一個MenuItem,我們可以根據它的返回值來設置更多選擇,例如菜單圖標等。

來看下它的參數,下面是它對應的API文檔中的解釋:參數1:分組,參數2:標示符id,參數3:排序,參數4:菜單文字

2、上下文菜單

國際慣例,先來看下效果圖:

什么是上下文菜單?

Android 的上下文菜單類似于Windows上的右鍵菜單。當為一個視圖注冊了上下文菜單之后,長按(2 秒左右)這個視圖對象就會彈出一個浮動菜單,即上下文菜單。任何視圖都可以注冊上下文菜單,不過,最常見的是用于列表視圖ListView的item。

創建上下文菜單步驟:

1、 覆寫 Activity 的 onCreateContenxtMenu() 方法,調用 Menu 的 add 方法添加菜單項(MenuItem)。

2、覆蓋 Activity 的 onContextItemSelected() 方法,響應上下文菜單菜單項的單擊事件。

3、調用 registerForContextMenu() 方法,為視圖注冊上下文菜單。

下面直接上個小Demo演示了,對于ListView組件這里就不再給注釋了,不清楚的朋友可以翻下我以前寫的文章。

 1 package com.example.menutest; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.ContextMenu; 6 import android.view.ContextMenu.ContextMenuInfo; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.view.View;10 import android.widget.ArrayAdapter;11 import android.widget.ListView;12 import android.widget.Toast;13 14 /**15  * 16  * @author Balla_兔子17  * 用代碼動態生成菜單(上下文菜單)18  *19  */20 public class MainActivity extends Activity  {21     22     private ListView listview;23     private ArrayAdapter<String> adapter;24     private String info[]={"選項1","選項2","選項3","選項4","選項5","選項6"};25 26     @Override27     protected void onCreate(Bundle savedInstanceState) {28         super.onCreate(savedInstanceState);29         setContentView(R.layout.activity_main);30         //創建一個ListView列表31         listview=(ListView) findViewById(R.id.listview);32         adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, info);33         listview.setAdapter(adapter);34 35         36         //給當前View注冊上下文菜單.37         this.registerForContextMenu(listview);38             39     }40     41     @Override42     public void onCreateContextMenu(ContextMenu menu, View v,43             ContextMenuInfo menuInfo) {44             menu.setHeaderTitle("我是上下文菜單");//設置上下文菜單題目45             menu.setHeaderIcon(R.drawable.ic_launcher);//設置上下文菜單題目圖標46             menu.add(1, 1, 1, "我是上下文菜單選項1");47             menu.add(1, 2, 1, "我是上下文菜單選項2");48             menu.add(1, 3, 1, "我是上下文菜單選項3");49             menu.add(1, 4, 1, "我是上下文菜單選項4");50     }51     52     @Override53     public boolean onContextItemSelected(MenuItem item) {54         switch(item.getItemId()){55         case 1:56             Toast.makeText(this, "點擊上下文菜單選項1", Toast.LENGTH_SHORT).show();57             break;58         case 2:59             Toast.makeText(this, "點擊上下文菜單選項2", Toast.LENGTH_SHORT).show();60             break;61         case 3:62             Toast.makeText(this, "點擊上下文菜單選項3", Toast.LENGTH_SHORT).show();63             break;64         case 4:65             Toast.makeText(this, "點擊上下文菜單選項4", Toast.LENGTH_SHORT).show();66             break;67         68         }69         return super.onContextItemSelected(item);70     }71     72     @Override73     //關閉上下文菜單觸發此方法74     public void onContextMenuClosed(Menu menu) {75         Toast.makeText(this, "關閉上下文菜單", Toast.LENGTH_SHORT).show();76     }77     78 79     80 81 82 }

3、子菜單

先看下效果圖:

創建子菜單的步驟:1、 覆寫Activity的onCreateOptionsMenu()方法,調用Menu的addSubMenu()方法來添加子菜單2、 調用SubMenu的add()方法,添加子菜單項(addSubMenu)3、 覆寫onOptionsItemSelected()方法,響應子菜單的單擊事件

  子菜單提供了一種自然的組織菜單項的方式,我們可以通過addSubMenu(int groupId, int itemId, int order, int titleRes)方法非常方便的創建和響應子菜單。

代碼和之前創建選項菜單,上下文菜單差不多,直接上代碼了:

 1 package com.example.menutest; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Menu; 6 import android.view.MenuItem; 7 import android.view.SubMenu; 8 import android.widget.Toast; 9 10 /**11  * 12  * @author Balla_兔子13  * 用代碼動態生成菜單(子菜單)14  *15  */16 public class MainActivity extends Activity  {17     18 19     @Override20     protected void onCreate(Bundle savedInstanceState) {21         super.onCreate(savedInstanceState);22         setContentView(R.layout.activity_main);23     }24     25     @Override26     public boolean onCreateOptionsMenu(Menu menu) {27         SubMenu s1=menu.addSubMenu(1, 0, 1, "我是菜單1");28         s1.setIcon(R.drawable.ic_launcher);//設置子菜單圖標29         s1.setHeaderTitle("子菜單");//設置子菜單標題30         s1.add(1, 1, 1, "我是子菜單1");31         s1.add(1, 2, 1, "我是子菜單2");32         s1.add(1, 3, 1, "我是子菜單3");33         s1.add(1, 4, 1, "我是子菜單4");34         35         SubMenu s2=menu.addSubMenu(2, 0, 1, "我是菜單2");36         s2.setIcon(R.drawable.ic_launcher);37         s2.setHeaderTitle("子菜單");38         s2.add(2, 1, 1, "我是子菜單(1)");39         s2.add(2, 2, 1, "我是子菜單(2)");40         s2.add(2, 3, 1, "我是子菜單(3)");41         s2.add(2, 4, 1, "我是子菜單(4)");42         43         return super.onCreateOptionsMenu(menu);44     }45     46     @Override47     public boolean onOptionsItemSelected(MenuItem item) {48         if(item.getGroupId()==1){//判斷分組49             switch(item.getItemId()){50             case 1:51                 Toast.makeText(MainActivity.this, "菜單1的子菜單1被點擊", Toast.LENGTH_SHORT).show();52                 break;53             case 2:54                 Toast.makeText(MainActivity.this, "菜單1的子菜單2被點擊", Toast.LENGTH_SHORT).show();55                 break;56             case 3:57                 Toast.makeText(MainActivity.this, "菜單1的子菜單3被點擊", Toast.LENGTH_SHORT).show();58                 break;59             case 4:60                 Toast.makeText(MainActivity.this, "菜單1的子菜單4被點擊", Toast.LENGTH_SHORT).show();61                 break;62             63         }64             }else if(item.getGroupId()==2){65                 switch(item.getItemId()){66                 case 1:67                     Toast.makeText(MainActivity.this, "菜單2的子菜單1被點擊", Toast.LENGTH_SHORT).show();68                     break;69                 case 2:70                     Toast.makeText(MainActivity.this, "菜單2的子菜單2被點擊", Toast.LENGTH_SHORT).show();71                     break;72                 case 3:73                     Toast.makeText(MainActivity.this, "菜單2的子菜單3被點擊", Toast.LENGTH_SHORT).show();74                     break;75                 case 4:76                     Toast.makeText(MainActivity.this, "菜單2的子菜單4被點擊", Toast.LENGTH_SHORT).show();77                     break;78                 }79             }80     81         return super.onOptionsItemSelected(item);82     }83 84 }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品xxx| 亚洲中国色老太| 久久久免费精品| 尤物yw午夜国产精品视频| 亚洲精品欧美日韩专区| 欧美国产乱视频| 国语对白做受69| 亚洲天堂一区二区三区| 欧美激情亚洲国产| 欧美日韩国产中文精品字幕自在自线| 亚洲91精品在线| 国产精品成人免费视频| 日韩av在线免费观看一区| 日韩中文娱乐网| 亚洲丝袜一区在线| 成人观看高清在线观看免费| 欧美精品制服第一页| 国产成人在线一区二区| 成人高h视频在线| 中文字幕欧美日韩| 久久久久久久久亚洲| 亚洲va国产va天堂va久久| 国产午夜精品视频免费不卡69堂| 91色在线观看| 在线播放日韩欧美| 中文字幕亚洲欧美日韩2019| 高跟丝袜欧美一区| 亚洲社区在线观看| 国模gogo一区二区大胆私拍| 日韩久久免费电影| 亚洲精品久久久久中文字幕欢迎你| 日韩av免费网站| 日韩中文娱乐网| 久久亚洲精品成人| 青青草成人在线| 91理论片午午论夜理片久久| 久久久久久九九九| 91亚洲精华国产精华| 久久精品国产久精国产一老狼| 亚洲国产精品大全| 国语自产在线不卡| 亚洲аv电影天堂网| 在线免费观看羞羞视频一区二区| 亚洲aaa激情| 亚洲国产高清高潮精品美女| 97视频在线观看视频免费视频| 91久久精品美女高潮| 欧美性猛交xxxx乱大交极品| 亚洲午夜精品久久久久久久久久久久| 美女国内精品自产拍在线播放| 欧美日韩中文字幕综合视频| 国产福利精品在线| 97精品国产97久久久久久春色| 亚洲国产又黄又爽女人高潮的| 欧美亚洲激情视频| 精品国产自在精品国产浪潮| 91黑丝在线观看| 国产网站欧美日韩免费精品在线观看| 在线免费看av不卡| 亚洲奶大毛多的老太婆| 亚洲视频专区在线| 国产精品无av码在线观看| www.国产精品一二区| 国产精品专区第二| 久久久久久91香蕉国产| 精品国产欧美一区二区五十路| 国产91在线播放九色快色| 日韩精品中文字幕在线播放| 91精品久久久久久综合乱菊| 国产精品久久久久久久午夜| 成人在线免费观看视视频| 亚洲aⅴ日韩av电影在线观看| 亚洲精选一区二区| 欧美激情视频在线| 亚洲精品国产福利| 亚洲在线免费视频| 欧美亚洲成人精品| 国产一区二区三区在线视频| 九九九久久国产免费| 日韩**中文字幕毛片| 欧美精品在线看| 久久久久久中文| 波霸ol色综合久久| 亚洲国产欧美一区二区三区同亚洲| 57pao精品| 国产精品偷伦免费视频观看的| 中文字幕欧美在线| 日韩av片电影专区| 亚洲电影成人av99爱色| 欧美精品电影在线| 亚洲精品国产欧美| 欧美精品国产精品日韩精品| 日韩经典中文字幕在线观看| 欧美大片网站在线观看| 亚洲高清色综合| 91精品美女在线| 另类少妇人与禽zozz0性伦| 91九色视频在线| 亚洲人成电影网站色xx| 欧美中文字幕视频在线观看| 日韩网站免费观看| 自拍偷拍亚洲在线| 色偷偷91综合久久噜噜| 欧美日韩国产在线看| 国产91|九色| 欧美人在线视频| 欧美精品少妇videofree| 91a在线视频| 久久五月情影视| 日韩中文字幕精品视频| 最近中文字幕日韩精品| 日本最新高清不卡中文字幕| www.xxxx欧美| 中文字幕久热精品视频在线| 中文国产成人精品| 日韩美女免费视频| 国产精品日日摸夜夜添夜夜av| 国产美女扒开尿口久久久| 97在线视频国产| 日本韩国在线不卡| 久久精品在线视频| 在线播放国产一区二区三区| 538国产精品一区二区免费视频| 97国产精品久久| 国产精品pans私拍| 中文字幕日韩精品在线| 久久久久久国产精品三级玉女聊斋| 亚洲美女av在线播放| 久久影视电视剧免费网站清宫辞电视| 精品国产一区二区三区久久久| 高清一区二区三区日本久| www.精品av.com| 亚洲国产精品va在线| 91精品视频免费观看| 精品亚洲精品福利线在观看| 中文字幕久久久av一区| 欧美亚洲一区在线| 久精品免费视频| 亚洲精品美女在线观看播放| 91av在线看| 亚洲国产精品一区二区三区| 国产一区二区三区四区福利| 96精品视频在线| 青草成人免费视频| 欧美成人午夜激情视频| 国外成人在线播放| 成人午夜在线观看| 8x拔播拔播x8国产精品| 欧美激情久久久| 日韩视频在线免费观看| 欧洲亚洲免费视频| 精品一区二区三区三区| 午夜欧美不卡精品aaaaa| 懂色av一区二区三区| 国产精品久久国产精品99gif| 精品亚洲永久免费精品| 97**国产露脸精品国产| 免费91在线视频| 欧美一级视频在线观看| 久久视频这里只有精品| 欧美有码在线观看视频| 国产精品入口免费视频一| 色综合老司机第九色激情| 日韩精品久久久久久福利|