Android menu菜單小結

 

android 菜單包括:

 

  • contextmenu(上下文菜單,通過長按調出)
  • optionmenu(menu菜單)
  • submenu(子菜單)
  • 帶按鈕的單選菜單
  • 帶按鈕的多選菜單
此程序演示了android的上下文菜單,menu按鈕菜單,子菜單(包括在xml文件中添加,和在程序中動態添加單選,多選子菜單)以及帶按鈕單選和多選的菜單
Java代碼 複製代碼 收藏代碼
  1. package org.ynu.android;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.HashMap;   
  5.   
  6. import android.app.Activity;   
  7. import android.app.AlertDialog;   
  8. import android.app.AlertDialog.Builder;   
  9. import android.content.DialogInterface;   
  10. import android.os.Bundle;   
  11. import android.view.ContextMenu;   
  12. import android.view.Menu;   
  13. import android.view.MenuInflater;   
  14. import android.view.MenuItem;   
  15. import android.view.SubMenu;   
  16. import android.view.View;   
  17. import android.view.ContextMenu.ContextMenuInfo;   
  18. import android.widget.AdapterView;   
  19. import android.widget.AdapterView.OnItemLongClickListener;   
  20. import android.widget.ListView;   
  21. import android.widget.SimpleAdapter;   
  22. import android.widget.Toast;   
  23. public class MenuActivity extends Activity {   
  24.   
  25.     private int groupId1 = 19880716;   
  26.     private int groupId2 = 19880717;   
  27.     private ListView lv;   
  28.   
  29.     /** Called when the activity is first created. */  
  30.     @Override  
  31.     public void onCreate(Bundle savedInstanceState) {   
  32.         super.onCreate(savedInstanceState);   
  33.         setContentView(R.layout.main);   
  34.   
  35.         lv = (ListView) findViewById(R.id.lv);   
  36.   
  37.         ArrayList data = new ArrayList();   
  38.   
  39.         HashMap map1 = new HashMap();   
  40.         map1.put("item""第一個選項");   
  41.         HashMap map2 = new HashMap();   
  42.         map2.put("item""第二個選項");   
  43.         HashMap map3 = new HashMap();   
  44.         map3.put("item""第三個選項");   
  45.         HashMap map4 = new HashMap();   
  46.         map4.put("item""第四個選項");   
  47.         HashMap map5 = new HashMap();   
  48.         map5.put("item""第五個選項");   
  49.   
  50.         data.add(map1);   
  51.         data.add(map2);   
  52.         data.add(map3);   
  53.         data.add(map4);   
  54.         data.add(map5);   
  55.   
  56.         SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,   
  57.                 new String[] { "item" }, new int[] { R.id.tv });   
  58.         lv.setAdapter(adapter);   
  59.   
  60.         //listview每個項長按時的響應上下文菜單   
  61.         lv.setOnItemLongClickListener(new OnItemLongClickListener() {   
  62.   
  63.             @Override  
  64.             public boolean onItemLongClick(AdapterView<?> arg0, View arg1,   
  65.                     int arg2, long arg3) {   
  66.                 // TODO Auto-generated method stub   
  67.   
  68.                 Toast.makeText(MenuActivity.this"彈出上下文菜單", Toast.LENGTH_SHORT);   
  69.                 return false;   
  70.             }   
  71.         });   
  72.            
  73.         //註冊上下文菜單   
  74.         registerForContextMenu(lv);   
  75.     }   
  76.   
  77.     //創建菜單按鈕的菜單   
  78.     @Override  
  79.     public boolean onCreateOptionsMenu(Menu menu) {   
  80.         // TODO Auto-generated method stub   
  81.   
  82.         MenuInflater inflater = new MenuInflater(this);   
  83.   
  84.         inflater.inflate(R.menu.menu, menu);   
  85.         menu.getItem(0).setIcon(R.drawable.ic_menu_delete);   
  86.         menu.getItem(1).setIcon(R.drawable.ic_menu_home);   
  87.         menu.getItem(2).setIcon(R.drawable.ic_menu_zoom);   
  88.         return super.onCreateOptionsMenu(menu);   
  89.     }   
  90.   
  91.     //當按鈕菜單被點擊時響應   
  92.     @Override  
  93.     public boolean onOptionsItemSelected(MenuItem item) {   
  94.         // TODO Auto-generated method stub   
  95.   
  96.         switch (item.getItemId()) {   
  97.         case R.id.delete:   
  98.             Toast.makeText(this"刪除", Toast.LENGTH_SHORT).show();   
  99.             return true;   
  100.         case R.id.main:   
  101.             Toast.makeText(this"主頁", Toast.LENGTH_SHORT).show();   
  102.             return true;   
  103.         case R.id.zoom:   
  104.             Toast.makeText(this"放大", Toast.LENGTH_SHORT).show();   
  105.             return true;   
  106.         default:   
  107.             return super.onOptionsItemSelected(item);   
  108.         }   
  109.   
  110.     }   
  111.   
  112.     //創建上下文菜單   
  113.     @Override  
  114.     public void onCreateContextMenu(ContextMenu menu, View v,   
  115.             ContextMenuInfo menuInfo) {   
  116.         // TODO Auto-generated method stub   
  117.         MenuInflater inflater = new MenuInflater(this);   
  118.         inflater.inflate(R.menu.context_menu, menu);   
  119.         menu.setHeaderIcon(R.drawable.icon);   
  120.         SubMenu submenu1 = menu.addSubMenu("動態添加的菜單1");   
  121.         submenu1.add(this.groupId1, 00"動態添加子菜單1");   
  122.         submenu1.add(this.groupId1, 00"動態添加子菜單2");   
  123.         submenu1.add(this.groupId1, 00"動態添加子菜單3");   
  124.         submenu1.add(this.groupId1, 00"動態添加子菜單4");   
  125.   
  126.         // 設置改組子菜單爲單選,第三個參數爲true時,子菜單單選   
  127.         submenu1.setGroupCheckable(this.groupId1, truetrue);   
  128.   
  129.         SubMenu submenu2 = menu.addSubMenu("動態添加的菜單2");   
  130.         submenu2.add(this.groupId2, 00"動態添加子菜單1");   
  131.         submenu2.add(this.groupId2, 00"動態添加子菜單2");   
  132.         submenu2.add(this.groupId2, 00"動態添加子菜單3");   
  133.         submenu2.add(this.groupId2, 00"動態添加子菜單4");   
  134.   
  135.         // 設置改組子菜單爲多選第三個參數爲false時,子菜單多選   
  136.         submenu2.setGroupCheckable(this.groupId2, truefalse);   
  137.         super.onCreateContextMenu(menu, v, menuInfo);   
  138.     }   
  139.   
  140.     @Override  
  141.     public boolean onContextItemSelected(MenuItem item) {   
  142.         // TODO Auto-generated method stub   
  143.   
  144.         switch (item.getItemId()) {   
  145.         case R.id.cmenu1:   
  146.             Toast.makeText(this"上下文菜單1", Toast.LENGTH_SHORT).show();   
  147.             return true;   
  148.         case R.id.cmenu2:   
  149.             Toast.makeText(this"上下文菜單2", Toast.LENGTH_SHORT).show();   
  150.             return true;   
  151.         case R.id.csubmenu1:   
  152.             Toast.makeText(this"來自xml,我還有子菜單", Toast.LENGTH_SHORT).show();   
  153.             return true;   
  154.         case R.id.csubmenu2:   
  155.             Toast.makeText(this"來自xml,我還有單選子菜單", Toast.LENGTH_SHORT).show();   
  156.             return true;   
  157.         case R.id.csubmenu3:   
  158.             Toast.makeText(this"來自xml,我還有多選子菜單", Toast.LENGTH_SHORT).show();   
  159.             return true;   
  160.         case R.id.buttonmenu1:   
  161.             buildRadioDialog();   
  162.             return true;   
  163.         case R.id.buttonmenu2:   
  164.             builderCheckBoxDialog();   
  165.             return true;   
  166.         default:   
  167.             //當按鈕被選中時,設置其選中狀態爲true,這樣才能看到在頁面上有選中的radio   
  168.             if (item.getGroupId() == this.groupId1) {   
  169.                 Toast.makeText(this"動態添加的菜單1的子菜單", Toast.LENGTH_SHORT).show();   
  170.                 if (!item.isChecked()) {   
  171.                     item.setChecked(true);   
  172.                     Toast.makeText(this"您選的是" + item.getTitle(),   
  173.                             Toast.LENGTH_SHORT).show();   
  174.                 }   
  175.             }   
  176.   
  177.             if (item.getGroupId() == this.groupId2) {   
  178.                 Toast.makeText(this"動態添加的菜單2的子菜單", Toast.LENGTH_SHORT).show();   
  179.                 if (!item.isChecked()) {   
  180.                     item.setChecked(true);   
  181.                     Toast.makeText(this"您選的是" + item.getTitle(),   
  182.                             Toast.LENGTH_SHORT).show();   
  183.                 }   
  184.             }   
  185.                
  186.                
  187.             if (!item.isChecked()) {   
  188.                 item.setChecked(true);   
  189.                 Toast.makeText(this"您選的是" + item.getTitle(),   
  190.                         Toast.LENGTH_SHORT).show();   
  191.             }   
  192.             return super.onContextItemSelected(item);   
  193.   
  194.         }   
  195.   
  196.     }   
  197.   
  198.     //上下文菜單關閉時   
  199.     @Override  
  200.     public void onContextMenuClosed(Menu menu) {   
  201.         // TODO Auto-generated method stub   
  202.         Toast.makeText(this"上下文菜單被關", Toast.LENGTH_SHORT).show();   
  203.         super.onContextMenuClosed(menu);   
  204.     }   
  205.   
  206.     private void buildRadioDialog() {   
  207.         Builder builder = new AlertDialog.Builder(this);   
  208.         builder.setTitle("單選按鈕菜單");   
  209.         final String[] titles = new String[] { "白色""橙色""藍色" };   
  210.   
  211.         //-1表示默認沒有按鈕被選中   
  212.         builder.setSingleChoiceItems(titles, -1,   
  213.                 new DialogInterface.OnClickListener() {   
  214.   
  215.                     @Override  
  216.                     public void onClick(DialogInterface dialog, int which) {   
  217.                         // TODO Auto-generated method stub   
  218.                         Toast.makeText(MenuActivity.this, titles[which],   
  219.                                 Toast.LENGTH_SHORT).show();   
  220.                     }   
  221.                 });   
  222.   
  223.         builder.setPositiveButton("確定"new DialogInterface.OnClickListener() {   
  224.   
  225.             @Override  
  226.             public void onClick(DialogInterface dialog, int which) {   
  227.                 // TODO Auto-generated method stub   
  228.                 Toast.makeText(MenuActivity.this"確定", Toast.LENGTH_SHORT)   
  229.                         .show();   
  230.             }   
  231.         });   
  232.   
  233.         builder.setNegativeButton("取消"new DialogInterface.OnClickListener() {   
  234.   
  235.             @Override  
  236.             public void onClick(DialogInterface dialog, int which) {   
  237.                 // TODO Auto-generated method stub   
  238.                 Toast.makeText(MenuActivity.this"取消", Toast.LENGTH_SHORT)   
  239.                         .show();   
  240.             }   
  241.         });   
  242.   
  243.         builder.create().show();   
  244.     }   
  245.   
  246.     private void builderCheckBoxDialog() {   
  247.         Builder builder = new AlertDialog.Builder(this);   
  248.         builder.setTitle("多選按鈕");   
  249.         final String[] titles = new String[] { "白色""橙色""藍色" };   
  250.         builder.setMultiChoiceItems(titles,   
  251.                 new boolean[] { falsefalsefalse },   
  252.                 new DialogInterface.OnMultiChoiceClickListener() {   
  253.   
  254.                     @Override  
  255.                     public void onClick(DialogInterface dialog, int which,   
  256.                             boolean isChecked) {   
  257.                         // TODO Auto-generated method stub   
  258.   
  259.                         //當checkbox選中時響應   
  260.                         if (isChecked) {   
  261.                             Toast.makeText(MenuActivity.this,   
  262.                                     titles[which] + "被選中", Toast.LENGTH_SHORT)   
  263.                                     .show();   
  264.                         }   
  265.   
  266.                         //當checkbox未選中時響應   
  267.                         if (!isChecked) {   
  268.                             Toast.makeText(MenuActivity.this,   
  269.                                     titles[which] + "被取消", Toast.LENGTH_SHORT)   
  270.                                     .show();   
  271.                         }   
  272.                     }   
  273.                 });   
  274.   
  275.         //確定按鈕事件響應   
  276.         builder.setPositiveButton("確定"new DialogInterface.OnClickListener() {   
  277.   
  278.             @Override  
  279.             public void onClick(DialogInterface dialog, int which) {   
  280.                 // TODO Auto-generated method stub   
  281.                 Toast.makeText(MenuActivity.this"確定", Toast.LENGTH_SHORT)   
  282.                         .show();   
  283.             }   
  284.         });   
  285.   
  286.         //取消按鈕 事件響應   
  287.         builder.setNegativeButton("取消"new DialogInterface.OnClickListener() {   
  288.   
  289.             @Override  
  290.             public void onClick(DialogInterface dialog, int which) {   
  291.                 // TODO Auto-generated method stub   
  292.                 Toast.makeText(MenuActivity.this"取消", Toast.LENGTH_SHORT)   
  293.                         .show();   
  294.             }   
  295.         });   
  296.   
  297.         builder.create().show();   
  298.     }   
  299. }  
package org.ynu.android;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MenuActivity extends Activity {

	private int groupId1 = 19880716;
	private int groupId2 = 19880717;
	private ListView lv;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		lv = (ListView) findViewById(R.id.lv);

		ArrayList data = new ArrayList();

		HashMap map1 = new HashMap();
		map1.put("item", "第一個選項");
		HashMap map2 = new HashMap();
		map2.put("item", "第二個選項");
		HashMap map3 = new HashMap();
		map3.put("item", "第三個選項");
		HashMap map4 = new HashMap();
		map4.put("item", "第四個選項");
		HashMap map5 = new HashMap();
		map5.put("item", "第五個選項");

		data.add(map1);
		data.add(map2);
		data.add(map3);
		data.add(map4);
		data.add(map5);

		SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
				new String[] { "item" }, new int[] { R.id.tv });
		lv.setAdapter(adapter);

		//listview每個項長按時的響應上下文菜單
		lv.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// TODO Auto-generated method stub

				Toast.makeText(MenuActivity.this, "彈出上下文菜單", Toast.LENGTH_SHORT);
				return false;
			}
		});
		
		//註冊上下文菜單
		registerForContextMenu(lv);
	}

	//創建菜單按鈕的菜單
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub

		MenuInflater inflater = new MenuInflater(this);

		inflater.inflate(R.menu.menu, menu);
		menu.getItem(0).setIcon(R.drawable.ic_menu_delete);
		menu.getItem(1).setIcon(R.drawable.ic_menu_home);
		menu.getItem(2).setIcon(R.drawable.ic_menu_zoom);
		return super.onCreateOptionsMenu(menu);
	}

	//當按鈕菜單被點擊時響應
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub

		switch (item.getItemId()) {
		case R.id.delete:
			Toast.makeText(this, "刪除", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.main:
			Toast.makeText(this, "主頁", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.zoom:
			Toast.makeText(this, "放大", Toast.LENGTH_SHORT).show();
			return true;
		default:
			return super.onOptionsItemSelected(item);
		}

	}

	//創建上下文菜單
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		MenuInflater inflater = new MenuInflater(this);
		inflater.inflate(R.menu.context_menu, menu);
		menu.setHeaderIcon(R.drawable.icon);
		SubMenu submenu1 = menu.addSubMenu("動態添加的菜單1");
		submenu1.add(this.groupId1, 0, 0, "動態添加子菜單1");
		submenu1.add(this.groupId1, 0, 0, "動態添加子菜單2");
		submenu1.add(this.groupId1, 0, 0, "動態添加子菜單3");
		submenu1.add(this.groupId1, 0, 0, "動態添加子菜單4");

		// 設置改組子菜單爲單選,第三個參數爲true時,子菜單單選
		submenu1.setGroupCheckable(this.groupId1, true, true);

		SubMenu submenu2 = menu.addSubMenu("動態添加的菜單2");
		submenu2.add(this.groupId2, 0, 0, "動態添加子菜單1");
		submenu2.add(this.groupId2, 0, 0, "動態添加子菜單2");
		submenu2.add(this.groupId2, 0, 0, "動態添加子菜單3");
		submenu2.add(this.groupId2, 0, 0, "動態添加子菜單4");

		// 設置改組子菜單爲多選第三個參數爲false時,子菜單多選
		submenu2.setGroupCheckable(this.groupId2, true, false);
		super.onCreateContextMenu(menu, v, menuInfo);
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		// TODO Auto-generated method stub

		switch (item.getItemId()) {
		case R.id.cmenu1:
			Toast.makeText(this, "上下文菜單1", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.cmenu2:
			Toast.makeText(this, "上下文菜單2", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.csubmenu1:
			Toast.makeText(this, "來自xml,我還有子菜單", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.csubmenu2:
			Toast.makeText(this, "來自xml,我還有單選子菜單", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.csubmenu3:
			Toast.makeText(this, "來自xml,我還有多選子菜單", Toast.LENGTH_SHORT).show();
			return true;
		case R.id.buttonmenu1:
			buildRadioDialog();
			return true;
		case R.id.buttonmenu2:
			builderCheckBoxDialog();
			return true;
		default:
			//當按鈕被選中時,設置其選中狀態爲true,這樣才能看到在頁面上有選中的radio
			if (item.getGroupId() == this.groupId1) {
				Toast.makeText(this, "動態添加的菜單1的子菜單", Toast.LENGTH_SHORT).show();
				if (!item.isChecked()) {
					item.setChecked(true);
					Toast.makeText(this, "您選的是" + item.getTitle(),
							Toast.LENGTH_SHORT).show();
				}
			}

			if (item.getGroupId() == this.groupId2) {
				Toast.makeText(this, "動態添加的菜單2的子菜單", Toast.LENGTH_SHORT).show();
				if (!item.isChecked()) {
					item.setChecked(true);
					Toast.makeText(this, "您選的是" + item.getTitle(),
							Toast.LENGTH_SHORT).show();
				}
			}
			
			
			if (!item.isChecked()) {
				item.setChecked(true);
				Toast.makeText(this, "您選的是" + item.getTitle(),
						Toast.LENGTH_SHORT).show();
			}
			return super.onContextItemSelected(item);

		}

	}

	//上下文菜單關閉時
	@Override
	public void onContextMenuClosed(Menu menu) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "上下文菜單被關", Toast.LENGTH_SHORT).show();
		super.onContextMenuClosed(menu);
	}

	private void buildRadioDialog() {
		Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("單選按鈕菜單");
		final String[] titles = new String[] { "白色", "橙色", "藍色" };

		//-1表示默認沒有按鈕被選中
		builder.setSingleChoiceItems(titles, -1,
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MenuActivity.this, titles[which],
								Toast.LENGTH_SHORT).show();
					}
				});

		builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MenuActivity.this, "確定", Toast.LENGTH_SHORT)
						.show();
			}
		});

		builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MenuActivity.this, "取消", Toast.LENGTH_SHORT)
						.show();
			}
		});

		builder.create().show();
	}

	private void builderCheckBoxDialog() {
		Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("多選按鈕");
		final String[] titles = new String[] { "白色", "橙色", "藍色" };
		builder.setMultiChoiceItems(titles,
				new boolean[] { false, false, false },
				new DialogInterface.OnMultiChoiceClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which,
							boolean isChecked) {
						// TODO Auto-generated method stub

						//當checkbox選中時響應
						if (isChecked) {
							Toast.makeText(MenuActivity.this,
									titles[which] + "被選中", Toast.LENGTH_SHORT)
									.show();
						}

						//當checkbox未選中時響應
						if (!isChecked) {
							Toast.makeText(MenuActivity.this,
									titles[which] + "被取消", Toast.LENGTH_SHORT)
									.show();
						}
					}
				});

		//確定按鈕事件響應
		builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MenuActivity.this, "確定", Toast.LENGTH_SHORT)
						.show();
			}
		});

		//取消按鈕 事件響應
		builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MenuActivity.this, "取消", Toast.LENGTH_SHORT)
						.show();
			}
		});

		builder.create().show();
	}
}
 
contex_menu.xml文件:
Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:id="@+id/cmenu1" android:title="上下文菜單1" />  
  4.     <item android:id="@+id/cmenu2" android:title="上下文菜單2" />  
  5.     <item android:id="@+id/csubmenu1" android:title="來自xml,我還有子菜單">  
  6.         <menu>  
  7.             <item android:title="子菜單1"></item>  
  8.             <item android:title="子菜單2"></item>  
  9.             <item android:title="子菜單3"></item>  
  10.         </menu>  
  11.     </item>  
  12.     <item android:id="@+id/csubmenu2" android:title="來自xml,我還有單選子菜單">  
  13.         <menu>  
  14.             <group android:checkableBehavior="single">  
  15.                 <item android:title="子菜單1"></item>  
  16.                 <item android:title="子菜單2"></item>  
  17.                 <item android:title="子菜單3"></item>  
  18.             </group>  
  19.         </menu>  
  20.     </item>  
  21.     <item android:id="@+id/csubmenu3" android:title="來自xml,我還有多選子菜單">  
  22.         <menu>  
  23.             <group android:checkableBehavior="all">  
  24.                 <item android:title="子菜單1"></item>  
  25.                 <item android:title="子菜單2"></item>  
  26.                 <item android:title="子菜單3"></item>  
  27.             </group>  
  28.         </menu>  
  29.     </item>  
  30.        
  31.     <item android:id="@+id/buttonmenu1" android:title="帶按鈕的單選子菜單">  
  32.     </item>  
  33.        
  34.     <item android:id="@+id/buttonmenu2" android:title="帶按鈕的多選子菜單">  
  35.     </item>  
  36. </menu>  
 
menu.xml文件:
Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:id="@+id/delete" android:title="刪除" />  
  4.     <item android:id="@+id/main" android:title="主頁">  
  5.         <menu>  
  6.             <item android:id="@+id/create_new" android:title="子菜單1" />  
  7.             <item android:id="@+id/open" android:title="子菜單2" />  
  8.         </menu>  
  9.     </item>  
  10.     <item android:id="@+id/zoom" android:title="放大" />  
  11. </menu>  
 
佈局文件main.xml
Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout  
  3. xmlns:android="http://schemas.android.com/apk/res/android"  
  4. android:layout_width="fill_parent"  
  5. android:layout_height="wrap_content"  
  6. >  
  7. <ListView  
  8. android:id="@+id/lv"  
  9. android:layout_width="fill_parent"  
  10. android:layout_height="wrap_content"  
  11. >  
  12. </ListView>  
  13. </RelativeLayout>  
 
item.xml佈局文件
Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout  
  3.   xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   android:layout_width="match_parent"  
  5.   android:layout_height="match_parent">  
  6.   <TextView  
  7.   android:id="@+id/tv"  
  8.   android:layout_width="fill_parent"  
  9.   android:layout_height="wrap_content"  
  10.   android:textSize="20dip"  
  11.   android:textColor="#065fb9"  
  12.   >  
  13.   </TextView>  
  14. </RelativeLayout>  
  效果圖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章