Android編程之菜單的實(shí)現(xiàn)方法實(shí)例詳解
本文實(shí)例講述了Android編程之菜單的實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
Options Menu 當(dāng)用戶按下menu button按鈕時(shí)顯示的菜單
Context Menu 當(dāng)用戶長久按住屏幕,被注冊顯示上下文菜單的視圖時(shí)顯示的菜單
Submenu 當(dāng)用戶按下一個(gè)菜單的某個(gè)選項(xiàng)時(shí)彈出的子菜單
以上三種菜單也就是我們經(jīng)常所說的:選項(xiàng)菜單,上下文菜單和子菜單。
一.上下文菜單
1. 實(shí)現(xiàn)onCreateContextMenu即可創(chuàng)建該菜單
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
// 加載已定義好的布局menu.xml
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.menu, menu);
// 或者用代碼來實(shí)現(xiàn)菜單添加
menu.setHeaderTitle("長按菜單-ContextMenu");
menu.add(0, 0, 0, "彈出長按菜單0");
menu.add(0, 1, 0, "彈出長按菜單1");
}
2. 當(dāng)菜單某個(gè)選項(xiàng)被點(diǎn)擊時(shí)調(diào)用該方法
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
AdapterContextMenuInfo infor = (AdapterContextMenuInfo)item.getMenuInfo();
switch (item.getItemId()) {
case R.id.help:
return true;
case R.id.addnew:
}
}
3. 當(dāng)上下文菜單關(guān)閉時(shí)調(diào)用的方法
@Override
public void onContextMenuClosed(Menu menu) {
// TODO Auto-generated method stub
super.onContextMenuClosed(menu);
}
對于這樣已經(jīng)定義好的上下文菜單,總得注冊到一些控件上,這樣等我們長按住這個(gè)控件時(shí),才能跳出上下文菜單。那該怎么把上下文菜單注冊到某些控件上呢,第一種是實(shí)現(xiàn)ListView的一個(gè)監(jiān)聽器
listview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
但是上下文菜單也要在該方法里創(chuàng)建.
public void onCreateContextMenu(ContextMenu conMenu, View view , ContextMenuInfo info) {
conMenu.setHeaderTitle("ContextMenu");
conMenu.add(0, 0, 0, "Delete this favorite!");
/* Add as many context-menu-options as you want to. */
}
});
或者是直接在本活動調(diào)用registerForContextMenu(this.listView1);這里是注冊到一個(gè)ListView上了,這樣長按ListView就能跳出上下文菜單了。
二. 選項(xiàng)菜單
相比而言就簡單了
一樣道理只需實(shí)現(xiàn)onCreateoptionsMenu,onOptionsItemSelected和onOptionsMenuClosed就ok了
三. 子菜單
按理說子菜單也不難,確實(shí)如此,當(dāng)實(shí)現(xiàn)了選項(xiàng)菜單,或上下文菜單(在上下文菜單里也可以實(shí)現(xiàn)子菜單,這里我們就舉這樣的例子),則子菜單的實(shí)現(xiàn)便是水到渠成。如上面的代
碼:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
//加載已定義好的布局menu.xml
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.menu, menu);
//或者用代碼來實(shí)現(xiàn)菜單添加
menu.setHeaderTitle("長按菜單-ContextMenu");
menu.add(0, 0, 0, "彈出長按菜單0");
menu.add(0, 1, 0, "彈出長按菜單1");
//在這里就可以添加實(shí)現(xiàn)子菜單的代碼
int base = menu.FIRST + 100;
SubMenu sm = menu.addSubMenu(base, base + 1, Menu.NONE, "submenu");
sm.add(base, base + 2, base + 2, "sub item1");
sm.add(base, base + 3, base + 3, "sub item2");
}
這樣子菜單便也實(shí)現(xiàn)了,對于它的單擊事件,只要在相應(yīng)的選項(xiàng)菜單或者上下文菜單的偵聽器里照樣判斷執(zhí)行就OK了。
希望本文所述對大家Android程序設(shè)計(jì)有所幫助。
- Android動態(tài)添加menu菜單的簡單方法
- Android編程實(shí)現(xiàn)自定義系統(tǒng)菜單背景的方法
- Android仿微信頂/底部菜單欄效果
- Android實(shí)現(xiàn)類似于PC中的右鍵彈出菜單效果
- Android編程之菜單實(shí)現(xiàn)方法
- Android編程實(shí)現(xiàn)二級下拉菜單及快速搜索的方法
- Android開發(fā)之menu菜單
- Android實(shí)現(xiàn)模仿UCweb菜單效果的方法
- Android上下文菜單用法實(shí)例分析
- Android選項(xiàng)菜單用法實(shí)例分析
- Android仿微信菜單(Menu)(使用C#和Java分別實(shí)現(xiàn))
- Android編程實(shí)現(xiàn)為應(yīng)用添加菜單的方法
相關(guān)文章
android dialog根據(jù)彈窗等級排序顯示的示例代碼
這篇文章主要介紹了android dialog根據(jù)彈窗等級排序顯示,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
Android仿新浪微博自定義ListView下拉刷新(4)
這篇文章主要為大家詳細(xì)介紹了Android仿新浪微博自定義ListView下拉刷新,重點(diǎn)介紹了Adapter的詳細(xì)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Android 微信小視頻錄制功能實(shí)現(xiàn)詳細(xì)介紹
這篇文章主要介紹了Android 微信小視頻錄制功能實(shí)現(xiàn)詳解的相關(guān)資料,這里提供了具體的實(shí)現(xiàn)思路及代碼,需要的朋友可以參考下2016-11-11
Android SQLite數(shù)據(jù)庫加密的操作方法
因?yàn)锳ndroid自帶的SQLite數(shù)據(jù)庫本身是沒有實(shí)現(xiàn)加密的,那我們?nèi)绾螌?shí)現(xiàn)對數(shù)據(jù)庫的加密呢?今天通過本文給大家介紹下Android SQLite數(shù)據(jù)庫加密的操作方法,一起看看吧2021-09-09
Android動畫之3D翻轉(zhuǎn)效果實(shí)現(xiàn)函數(shù)分析
Android中的翻轉(zhuǎn)動畫效果的實(shí)現(xiàn),Android中并沒有提供直接做3D翻轉(zhuǎn)的動畫,所以關(guān)于3D翻轉(zhuǎn)的動畫效果需要我們自己實(shí)現(xiàn),那么我們首先來分析一下Animation 和 Transformation,感興趣的朋友可以了解下啊2013-01-01

