Android中的Menu(菜单)的三种类型菜单的学习

 

         今天学习一下菜单组件,在Android中的菜单中有三种①:OptionMenu(选项菜单)②:ContextMenu(上下文菜单) ③:SubMenu(子菜单)

         下面分别来学一下

        一:OptionMenu(选项菜单) 当我们使用手机的时候,按着手机上面的Menu,弹出的菜单就是选项菜单。但是我们一次性能显示菜单选项只能是6个

如果我们设置的超过6个时候,第六个菜单选项会自动设置成更多,然后我们点击更多的时候,剩下来的选项菜单就会选项.。先看下选项菜单的测试截图

   Android中的Menu(菜单)的三种类型菜单的学习_第1张图片Android中的Menu(菜单)的三种类型菜单的学习_第2张图片

   下面我们来创建一个选项菜单,步骤如下:

   ①:先去覆盖Activity中的onCreateOptionsMenu(),但是这个方法只会在第一次调用的时候会被实例化,当实例化时候,就不会在被调用了

   ②:调用add()来添加菜单选项.add(groupId, itemId, order, titleRes)方法中个参数的意思是,

 *      @param group
 *            : 选项组号,一般都设置成0就OK啦
 * @param itenId
 *            : 选项的Id 很重要
 * @param order
 *            :顺序,一般来说都设置0就行了
 * @param titelRes
 *            : 选项的标题名字
 */

    ③:覆盖onCreateOptionsMenu(Menu menu)menu.getItemId()来获取选项的Id


 下面来看下Demo源代码:

package com.jiangqq.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

/**
 * ①:直接去覆盖public boolean onCreateOptionsMenu(Menu menu) { code......},
 *   这个方法,需要注意的是,这个方法如果覆盖的了,只会被创建一次,也就是说, 选项菜单只会去被实例化一次,,,之后就不会被去调用了
 * ②:调用Menu中的add()方法,来添加每一个菜单选项, add(groupId, itemId, order, titleRes) group:
 *     选项组号,一般都设置成0就OK啦 itenId: 选项的Id 很重要 order:顺序,一般来说都设置0就行了 titelRes: 选项的标题名字
 * ③:当我们去点击某项的选项的时候,覆盖重写onOptionsItemSelected(MenuItem item)这个方法去实现点击事件
 * 
 * @author jiangqq
 * 
 */
public class Option_Menu_Activity extends Activity {
	// 点击菜单选项的常量Id
	private static final int menu1 = 1;
	private static final int menu2 = 2;
	private static final int menu3 = 3;
	private static final int menu4 = 4;
	private static final int menu5 = 5;
	private static final int menu6 = 6;
	private static final int menu7 = 7;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

	}

	/**
	 * @param group
	 *            : 选项组号,一般都设置成0就OK啦
	 * @param itenId
	 *            : 选项的Id 很重要
	 * @param order
	 *            :顺序,一般来说都设置0就行了
	 * @param titelRes
	 *            : 选项的标题名字
	 */
	public boolean onCreateOptionsMenu(Menu menu) {

		menu.add(0, menu1, 0, "Menu1");
		menu.add(0, menu2, 0, "Menu2");
		menu.add(0, menu3, 0, "Menu3");
		menu.add(0, menu4, 0, "Menu4");
		menu.add(0, menu5, 0, "Menu5");
		menu.add(0, menu6, 0, "Menu6");
		menu.add(0, menu7, 0, "Menu7");
		return true;

	}

	/**
	 * 
	 * @param item
	 *            .getItemId() 获取被点击的Id
	 */
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case menu1:
			Toast.makeText(this, "你点击Menu1", Toast.LENGTH_LONG).show();
			break;
		case menu2:
			Toast.makeText(this, "你点击Menu2", Toast.LENGTH_LONG).show();
			break;
		case menu3:
			Toast.makeText(this, "你点击Menu3", Toast.LENGTH_LONG).show();
			break;
		case menu4:
			Toast.makeText(this, "你点击Menu4", Toast.LENGTH_LONG).show();
			break;
		case menu5:
			Toast.makeText(this, "你点击Menu5", Toast.LENGTH_LONG).show();
			break;
		case menu6:
			Toast.makeText(this, "你点击Menu6", Toast.LENGTH_LONG).show();
			break;
		case menu7:
			Toast.makeText(this, "你点击Menu7", Toast.LENGTH_LONG).show();
			break;
		}
		return true;
	}
}


   二:SubMenu(子菜单)

      平时我们希望把同一类型的菜单进行分级来显示,这时候我们会用SubMenu.下面的Demo,是创建两个菜单选项,当点击Menu3的时候 会弹出menu1和menu2的菜单

      创建一个SubMenu的基本步骤如下

     

   ①: 先去覆盖Activity中的onCreateOptionsMenu()

  ②:调用addSubMenu()来添加子菜单项,然后调用add()来添加子菜单

   ③:覆盖onCreateOptionsMenu(Menu menu)menu.getItemId()来获取选项的Id,去响应单击事件

下面是源代码:

  

package com.jiangqq.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;

public class Sub_Menu_Activity extends Activity {
	private static final int menu3 = 3;
	private static final int menu4 = 4;
	private static final int menu1 = 1;
	private static final int menu2 = 2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		setContentView(R.layout.sub);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		SubMenu M3 = menu.addSubMenu("Menu3");
		SubMenu M4 = menu.addSubMenu("Menu4");
		M3.add(0, menu1, 0, "Menu1");
		M3.add(0, menu2, 0, "Menu2");
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case menu1:
			Toast.makeText(this, "你点击的是Menu1", Toast.LENGTH_LONG).show();
			break;
		case menu2:
			Toast.makeText(this, "你点击的是Menu2", Toast.LENGTH_LONG).show();
			break;

		}
		return true;
	}

}

截图显示:

 Android中的Menu(菜单)的三种类型菜单的学习_第3张图片Android中的Menu(菜单)的三种类型菜单的学习_第4张图片

  

三:ContexgMenu(上下文菜单)

   首先什么是上下文菜单,当我们长时间按住屏幕的时候,会弹出菜单,那个就是ContextMenu();

   看先文档中对创建ContextMenu()的方法:

 To show a context menu on long click, most clients will want to call registerForContextMenu(View) and override onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo).

  【注】 长按按钮,来显示上下文菜单我们必须要去调用  registerForContextMenu(View) ,onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo).

 

  看下实现的源代码:

package com.jiangqq.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class Context_Menu_Activity extends Activity {
	private static final int menu1 = 1;
	private static final int menu2 = 2;
	private static final int menu3 = 3;

	private TextView context_demo;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.context);
		context_demo = (TextView) this.findViewById(R.id.context_demo);
		registerForContextMenu(context_demo);
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {

		super.onCreateContextMenu(menu, v, menuInfo);
		menu.add(0, menu1, 0, "Menu1");
		menu.add(0, menu2, 0, "Menu2");
		menu.add(0, menu3, 0, "Menu3");
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case menu1:
			Toast.makeText(this, "你 点击的是Menu1", Toast.LENGTH_LONG).show();
			context_demo.setText("你点击的是Menu1");
			break;

		case menu2:
			Toast.makeText(this, "你点击的是Menu2", Toast.LENGTH_LONG).show();
			context_demo.setText("你点击的是Menu2");
			break;
		case menu3:
			Toast.makeText(this, "你点击的是Menu3", Toast.LENGTH_LONG).show();
			context_demo.setText("你点击的是Menu3");
			break;
		}
		return true;
	}
}

 

  


    


你可能感兴趣的:(android,测试,Class,文档,手机,menu)