文章目錄
Creating Menus
android 菜單包括三種.Options Menu , Context Menu 和Submenu.
本文完整代碼 CSDN下載頻道 :http://download.csdn.net/source/2900952 ,
-
1.Options Menu(選項菜單)
-
-
-
@方法1
-
需要重寫public boolean onCreateOptionsMenu(Menu menu)和
-
public boolean onOptionsItemSelected(MenuItem item)方法,
-
可用如下代碼,添加menuitem
-
[java] view plaincopy
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // TODO Auto-generated method stub
- switch(item.getItemId()) {
- case 1://id可以是用menu.add方法產生的數字,也可是用xml檔案產生的R.id.XX
- System.out.println("new clicked");
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- menu.add(0, 1, 1, "new");
- menu.add(0, 2, 2, "open");
- menu.add(0, 3, 3, "close");
- menu.add(0, 4, 4, "start");
- menu.add(0, 5, 5, "about");
- menu.add(0, 6, 6, "restart");
- menu.add(0, 7, 7, "reopen");
- SubMenu sub = menu.addSubMenu(0, 2, 2, "含子功能表");
- Resources res = getBaseContext().getResources();
- sub.setIcon(res.getDrawable(R.drawable.icon));
- sub.setHeaderIcon(res.getDrawable(R.drawable.icon));
- sub.add(1, 3, 0, "Menu A1");
- sub.add(1, 4, 1, "Menu A2");
- return super.onCreateOptionsMenu
-
@方法2
-
在xml檔案中定義好
-
[xhtml] view plaincopy
- <?xml version="1.0" encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@+id/new_game"
- android:icon="@drawable/ic_new_game"
- android:title="@string/new_game" />
- <item android:id="@+id/quit"
- android:icon="@drawable/ic_quit"
- android:title="@string/quit" />
- </menu>
-
並在java檔案中.調用如下方法
-
[java] view plaincopy
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.game_menu, menu);
- return true;
- }
-
-
-
-
2.Context Menu(操作功能表,類似windows下的右鍵菜單)
-
(有點類似android中的dialog對話方塊.)
-
一般,contextMenu多用於ListView 視圖中,當使用者持續按住一個listItem的時候.就可以彈出ContextMenu來.並執行需要的功能.
-
可用如下代碼產生contextMenu:
-
並需要調用
registerForContextMenu()對contextMenu進行註冊;
-
[java] view plaincopy
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v,
- ContextMenuInfo menuInfo) {
- // TODO Auto-generated method stub
- menu.setHeaderTitle("ContextMenu");
- menu.add(0, 0, 0, "contextMenuItem 0");
- menu.add(0, 1, 0, "contextMenuItem 1");
- super.onCreateContextMenu(menu, v, menuInfo);
- }
- //長按菜單響應函數
- @Override
- public boolean onContextItemSelected(MenuItem item) {
- setTitle("contextMenuItem"+item.getItemId()+"Clicked");
- return super.onContextItemSelected(item);
- }
-
我在網上發現另一種不用調用
registerForContextMenu()的方法代碼如下:
-
[java] view plaincopy
- list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
- menu.setHeaderTitle("ContextMenu");
- menu.add(0, 0, 0, "contextMenuItem0");
- menu.add(0, 1, 0, "contextMenuItem1");
- }
- });
-
直接將list綁定到list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
-
介面並在其中用匿名類寫相應的代碼.
-
3.Submenu(子功能表,類似windows下,右鍵菜單中,黑色三角形指向的菜單)
-
當然也可以用兩種方式產生.一種是通過xml檔案,一種是java中直接寫代碼.
-
android的文檔中,只是簡單的描述了下,用xml檔案設的子功能表.
-
我用的後一種方法.代碼如下:
-
[java] view plaincopy
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- SubMenu sub = menu.addSubMenu(0, 2, 2, "含子功能表");
- Resources res = getBaseContext().getResources();
- sub.setIcon(res.getDrawable(R.drawable.icon));
- sub.setHeaderIcon(res.getDrawable(R.drawable.icon));
- sub.add(1, 3, 0, "Menu A1");
- sub.add(1, 4, 1, "Menu A2");
- return super.onCreateOptionsMenu(menu);
- }
-
菜單選項還有許多其他的特性.
-
包括,menu Groups,將按鈕分組,菜單分組,可以方便的將組中的菜單visiable屬性,Enable屬性,checkable屬性,一齊改變.
-
包括 Checkable menu items,用類似checkbox的屬性或者radiobutton的屬性.
-
包括Shortcut keys(快速鍵),
-
包括intent for menu items(android中用於activity間傳輸資料的一種方式).
-
包括Dynamically adding Intents(動態增加intent).
-
包括Allowing your Activity to be added to menus(允許activty被增加到多個功能表項目中)等.
-
本文完整代碼CSDN下載頻道:http://download.csdn.net/source/2900952 ,
-
由於小生初學android,好多問題都是一知半解.希望看到本文的同學.能夠多多支援.並增加交流.