麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

安卓開發筆記——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 }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 撅高 自己扒开 调教 | 91专区在线观看 | 欧美日韩国产一区二区三区在线观看 | 一本色道久久综合狠狠躁篇适合什么人看 | 日韩美香港a一级毛片免费 日韩激情 | 日韩视频一区二区在线观看 | 一级免费观看 | 成人黄色小视频在线观看 | 免费看毛片的网站 | 国产免费福利视频 | 久久国产成人精品国产成人亚洲 | 国产一区二区三区视频免费 | 草久影院 | 羞羞网站在线看 | www.三区| 亚洲小视频在线观看,com | 午夜生活理论片 | 欧美性受xxxx人人本视频 | 久久精品亚洲一区二区 | 欧美a在线看 | 久久日韩在线 | 国产精品99免费视频 | 羞羞视频免费入口网站 | 欧美性生活视频免费看 | 538任你躁在线精品视频网站 | 在线99热| 亚洲免费资源 | 亚洲影视在线观看 | 免费永久看羞羞片网站入口 | 日本aaaa片毛片免费观看视频 | 久久国产免费 | 爱逼av| 欧美成视频在线观看 | 中文在线免费观看 | 国产精品av久久久久久久久久 | 国产一区免费在线 | av在线免费播放网站 | 视频一区国产精品 | 欧美一级色片 | 久久久久久久久国产 | 国产精品自拍av |