線上服務咨詢
Article/文章
記錄成長點滴 分享您我感悟
Android中的詳細菜單欄
發表時間:2019-07-30 16:15:34
文章來源:沈陽軟件開發
標簽:網站建設 小程序開發 小程序制作 微信小程序開發 公眾號開發 微信公眾號開發 網頁設計 網站優化 網站排名 網站設計 微信小程序設計 小程序定制 微信小程序定制
瀏覽次數:0
理解Android的菜單
選項菜單:最常見的菜單,在android中稱為選項菜單
子菜單:單擊android中的子菜單將彈出浮動窗口以顯示子菜單項。子菜單不支持嵌套,也就是說,子菜單中不能包含其他子菜單。
上下文菜單:android長按菜單后視圖控件,windows右鍵單擊彈出菜單是上下文菜單
圖標菜單:這個比較簡單,是帶圖標的菜單項,需要注意子菜單項、上下文菜單項、擴展菜單項均無法顯示圖標。
替代菜單:使用較少,后來單獨介紹,本文首先跳過(事實上,我還沒想出來o(≧v≦)o ~~)
擴展菜單:選項菜單最多只能顯示6個菜單項。當有超過6個項目時,第6個菜單項將被系統替換為名為“更多”的子菜單。原始菜單項不會顯示。
“更多”菜單的子菜單項。如下圖所示
每個活動都包含一個菜單。菜單可以包含多個菜單項和多個子菜單。子菜單也是一個菜單(因為它實現了菜單界面),因此子菜單也可以包含多個菜單項。 OnCreateOptionsMenu()和OnOptionsMenuSelected()是用于創建菜單項和響應菜單項單擊的活動中提供的兩種回調方法
1,創建options menu ?選項菜單
[java]查看plaincopy
@override
publicbooleanonCreateOptionsMenu(Menumenu){
//與未來版本兼容
super.onCreateOptionsMenu(菜單);
//以多種方式添加菜單項
//menu.add('menu item 1'); //1,直接指定標題,我不知道如何調用此響應
//menu.add(R.string.menuitem2);//2,按資源指定標題
Menu.add(1,Menu.FIRST,1,'menu item 1'); //3,明確指定菜單項的組號,ID,排序,標題
Menu.add(1,Menu.FIRST + 1,2,'菜單項2');
Menu.add(2,Menu.FIRST + 2,3,'菜單項3');
Menu.add(2,Menu.FIRST + 3,4,'菜單項4');
Menu.add(2,Menu.FIRST + 4,5,'菜單項5');
Menu.add(2,Menu.FIRST + 5,6,'菜單項6'); //超過6將被系統中的更多單詞替換
Menu.add(2,Menu.FIRST + 6,7,'菜單項7');
Menu.add(2,Menu.FIRST + 7,8,'菜單項8');
[java]查看plaincopy
Returntrue; //如果你想要真正的菜單,返回true
響應菜單項
最常用的方法是覆蓋活動類的onOptionsItemSelected(MenuItem)回調方法。每當單擊一個菜單項時,android將調用該方法并傳入單擊的菜單項。
以下代碼可用作使用onOptionsItemSelected方法響應菜單的模板。為方便起見,菜單ID在程序中硬編碼。您可以使用常量或資源ID來使代碼更健壯
[java]查看plaincopy
@override
publicbooleanonOptionsItemSelected(MenuItemitem){
開關(item.getItemId()){
案例1:
//DoSomething的
Toast.makeText(this,'1',Toast.LENGTH_LONG).show();
打破;
案例2:
Toast.makeText(this,'2',Toast.LENGTH_LONG).show();
打破;
案例3:
Toast.makeText(this,'3',Toast.LENGTH_LONG).show();
打破;
案例4:
Toast.makeText(this,'4',Toast.LENGTH_LONG).show();
打破;
默認值:
returnsuper.onOptionsItemSelected(項目);
}
Returntrue;
}
使用監聽器響應菜單項
雖然上面的方法是推薦的方法,但android仍然提供了一種類似于swing的偵聽器方式來響應菜單。使用偵聽器的方法分為兩步:
[java]查看plaincopy
//步驟1:為菜單項
注冊監聽器menuItem.setOnMenuItemClickListener(newMyMenuItemClickListener());
//第2步:創建一個監聽器類
classMyMenuItemClickListenerimplementsOnMenuItemClickListener {
@override
publicbooleanonMenuItemClick(MenuItemitem){
開關(){
//dosomethinghere .
}
Returntrue; //finishhandling
}
}
此方法在onOptionsItemSelected執行之前。
[java]查看plaincopy
2,子菜單Sub?Menu
Android支持子菜單,您可以通過addSubMenu(intgroupId,intitemId,intorder,inttitleRes)方法輕松創建和響應子菜單。[java]查看plaincopy
@override
publicbooleanonCreateOptionsMenu(Menumenu){
//與未來版本兼容
super.onCreateOptionsMenu(菜單);
//添加子菜單
//菜單可以有多個子菜單
menu.addSubMenu(1,Menu.FIRST,1,'系統設置');
SubMenusubMenu=menu.addSubMenu(1,Menu.FIRST + 1,2,'網絡設置'); //子菜單支持圖標
subMenu.setIcon(R.drawable.ic_launcher);
MenuItemmenuItem=subMenu.add(2,Menu.FIRST + 2,Menu.NONE,'menu item 1'); //子菜單項不支持顯示圖標
//menuItem.setIcon(R.drawable.ic_launcher);
subMenu.add(2,Menu.FIRST + 3,Menu.NONE,'menu item 2');
subMenu.add(2,Menu.FIRST + 4,Menu.NONE,'menu item 3');
subMenu.add(2,Menu.FIRST + 5,Menu.NONE,'menu item 4');
Returntrue; //如果你想要真正的菜單,返回true
}
上面的代碼演示了如何創建一個子菜單,其對菜單項的響應實際上是普通菜單項的響應
3,圖標菜單Icon Menu
Android支持在菜單上顯示各種圖標,我們在創建
上面的子菜單時已經使用過這些圖標[java]查看plaincopy
SubMenusubMenu=menu.addSubMenu(1,Menu.FIRST + 1,2,'網絡設置'); //子菜單支持圖標
subMenu.setIcon(R.drawable.ic_launcher);
Android并不意味著菜單項可以添加圖標。不允許使用以下菜單項(這并不意味著程序將報告錯誤,但不會顯示運行時圖標):
擴展菜單項。
子菜單的菜單項
上下文菜單的菜單項
4,ContextMenu簡介
在Windows中,我們習慣右鍵單擊文件以執行“打開”,“重命名”,“剪切”,“刪除”等操作。右鍵單擊菜單是上下文菜單。
Android是通過長按視圖元素來彈出上下文菜單。
上下文菜單和“選項”菜單之間的最大區別在于“選項”菜單的所有者是“活動”,上下文菜單的所有者是“活動”中的“視圖”。每個活動都有一個且只有一個選項菜單,它為整個活動提供服務。并且一個Activity通常有多個Views,而不是每個View都有一個上下文菜單,這需要我們通過
顯示registerForContextMenu(Viewview)指定。
這是一個演示如何創建和響應上下文菜單的演示:
1.在活動的onCreate(.)方法
中注冊視圖的上下文菜單2.在onCreateContextMenuInfo(.)中生成上下文菜單。
3.響應onContextItemSelected(.)中的上下文菜單項。
[java]查看plaincopy
publicclassMenuDemoActivityextendsActivity {
privateListViewlistView;
@override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
initView(); //做一些初始化工作
}
privatevoidinitView(){
的ListView=(ListView中)this.findViewById(R.id.listview);
listView.setAdapter(newMyAdapter());
this.registerForContextMenu(listView); //1為所有列表項注冊上下文菜單,與響應事件不同
}
//向ListView提供一些數據
privateclassMyAdapterextendsBaseAdapter {
publicintgetCount(){
Return5;
}
publicObjectgetItem(intposition){
//TODOAuto-generatedmethodstub
Returnnull;
}
publiclonggetItemId(intposition){
//TODOAuto-generatedmethodstub
Return0;
}
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
TextViewtv=newTextView(MenuDemoActivity.this);
tv.setText( '文件' +位);
Returntv;
}
}
@override
//2C創建一個上下文菜單
publicvoidonCreateContextMenu(ContextMenumenu,Viewv,
ContextMenuInfomenuInfo){
super.onCreateContextMenu(菜單,V,menuInfo);
menu.setHeaderTitle('file operation');
Menu.add(1,Menu.FIRST,Menu.NONE,'send');
Menu.add(1,Menu.FIRST + 1,Menu.NONE,'標記為重要');
Menu.add(1,Menu.FIRST + 2,Menu.NONE,'Rename');
Menu.add(1,Menu.FIRST + 3,Menu.NONE,'delete');
}
@override
//3響應上下文菜單
publicbooleanonContextItemSelected(MenuItemitem){
開關(item.getItemId()){
案例1:
Toast.makeText(this,'send',1).show();
打破;
案例2:
Toast.makeText(這個,'標記為重要',1).show();
打破;
案例3:
Toast.makeText(this,'rename',1).show();
打破;
案例4:
Toast.makeText(this,'delete',1).show();
打破;
默認值:
returnsuper.onContextItemSelected(項目);
}
Returntrue;
}
}
運行程序,多次調用上下文菜單,注意LogCat的輸出,每次都調用onCreateContextMenu。
標簽:& nbsp& nbsp沈陽app開發&營銷類型網站建設& nbsp沈陽App設計& nbspAndroid菜單欄詳細說明網站建設,小程序開發,小程序制作,微信小程序開發,公眾號開發,微信公眾號開發,網頁設計,網站優化,網站排名,網站設計,微信小程序設計,小程序定制,微信小程序定制