編輯:關於Android編程
本文實例講述了Android編程之菜單的實現方法。分享給大家供大家參考,具體如下:
Options Menu 當用戶按下menu button按鈕時顯示的菜單
Context Menu 當用戶長久按住屏幕,被注冊顯示上下文菜單的視圖時顯示的菜單
Submenu 當用戶按下一個菜單的某個選項時彈出的子菜單
以上三種菜單也就是我們經常所說的:選項菜單,上下文菜單和子菜單。
一.上下文菜單
1. 實現onCreateContextMenu即可創建該菜單
@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);
// 或者用代碼來實現菜單添加
menu.setHeaderTitle("長按菜單-ContextMenu");
menu.add(0, 0, 0, "彈出長按菜單0");
menu.add(0, 1, 0, "彈出長按菜單1");
}
2. 當菜單某個選項被點擊時調用該方法
@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. 當上下文菜單關閉時調用的方法
@Override
public void onContextMenuClosed(Menu menu) {
// TODO Auto-generated method stub
super.onContextMenuClosed(menu);
}
對於這樣已經定義好的上下文菜單,總得注冊到一些控件上,這樣等我們長按住這個控件時,才能跳出上下文菜單。那該怎麼把上下文菜單注冊到某些控件上呢,第一種是實現ListView的一個監聽器
listview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
但是上下文菜單也要在該方法裡創建.
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. */
}
});
或者是直接在本活動調用registerForContextMenu(this.listView1);這裡是注冊到一個ListView上了,這樣長按ListView就能跳出上下文菜單了。
二. 選項菜單
相比而言就簡單了
一樣道理只需實現onCreateoptionsMenu,onOptionsItemSelected和onOptionsMenuClosed就ok了
三. 子菜單
按理說子菜單也不難,確實如此,當實現了選項菜單,或上下文菜單(在上下文菜單裡也可以實現子菜單,這裡我們就舉這樣的例子),則子菜單的實現便是水到渠成。如上面的代
碼:
@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);
//或者用代碼來實現菜單添加
menu.setHeaderTitle("長按菜單-ContextMenu");
menu.add(0, 0, 0, "彈出長按菜單0");
menu.add(0, 1, 0, "彈出長按菜單1");
//在這裡就可以添加實現子菜單的代碼
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");
}
這樣子菜單便也實現了,對於它的單擊事件,只要在相應的選項菜單或者上下文菜單的偵聽器裡照樣判斷執行就OK了。
希望本文所述對大家Android程序設計有所幫助。
android RecyclerView布局真的只是那麼簡單!
如今android N都已經出來了,作為一個android開發者如果還不知道如何使用android5.X的 RecyclerView未免有點說不過去了。RecyclerV
我的Android進階之旅------Android 5.0中出現警告的解決方法: Service Intent must be explicit:
1.錯誤描述今天在Android4.4 的小米4手機上運行我的程序的時候沒有報錯,而在Android 5.1的華為P7上運行我的程序的時候報了以下的錯誤,錯誤提示如下:E
Android學習筆記-保存文件(Saving Files)
Android設備有兩種文件存儲區域:內部存儲和外部存儲 (internal and external storage)。這名字來自早期Android,那時大多數Andr
Android開發仿QQ空間根據位置彈出PopupWindow顯示更多操作效果
我們打開QQ空間的時候有個箭頭按鈕點擊之後彈出PopupWindow會根據位置的變化顯示在箭頭的上方還是下方,比普通的PopupWindow彈在屏幕中間顯示好看的多。先看