android:三种菜单(Menu)的设置

(1)Menu 菜单

菜单分为三种(1)系统菜单:OptionMenu        当点击手机菜单键时弹出来的菜单

                        (2)上下文菜单:ContextMenu         比如当长按listView后弹出来的菜单键

                        (3)弹出菜单 :PopupMenu         当点击之后弹出来的菜单


(1)系统菜单设置步骤:

                      <1>首先在需要菜单的Activit生成回调方法:

                                                                       onCreateOptionsMenu(Menu menu)   (这个方法一般在创建项目的时候在MainActivity中生成,就不赘述了

                    <2>生成菜单上的每个item元素

                                        在res文件-------menu文件夹---------main.xml   中进行声明菜单的item

                     <3>为每个item设置监听事件

                                           调用方法:onOptionItemSelected(MenuItem item)

      

                                  {switch (item.getItemId()) {
                                   case R.id.action_settings:
                                        // 点击时显示系统的设置界面
                                   startActivity(new Intent(Settings.ACTION_SETTINGS));

                                        break;
                                       case R.id.action_add:
                                   // 点击时放大TextView上的字体
                                   textView.setTextSize(textView.getTextSize() + 5);
                                         break;
                                 case R.id.action_sub:
                                    textView.setTextSize(textView.getTextSize() - 5);
                                     break;
                                        }
                                    return super.onOptionsItemSelected(item);

                                     }

假如需要在菜单中设置图标则需要设置
// 为系统菜单项添加图标
	// enable为true时,菜单添加图标有效,enable为false时无效。4.0+系统默认无效
	private void setIconEnable(Menu menu, boolean enable) {
		try {
			Class<?> clazz = Class
					.forName("com.android.internal.view.menu.MenuBuilder");
			
			Method m = clazz.getDeclaredMethod("setOptionalIconsVisible",
					boolean.class);
			
			m.setAccessible(true);
			
			// MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)
			m.invoke(menu, enable);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

(2)上下文菜单(ContextMenu)

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		textView = (TextView) findViewById(R.id.textView);
		// 1:给需要上下文菜单的UI视图注册上下文菜单
		// 当在textView上长按时会出现上下文菜单 ---会去回调创建上下文菜单的方法onCreateContextMenu
		registerForContextMenu(textView);
	}
	// 2:创建上下文菜单
	// menu接收的是上下文菜单对象,由系统创建
	// v接收的被注册了上下文菜单的视图对象
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// 创建菜单项对象并加入到上下文菜单对象中(menu)
		getMenuInflater().inflate(R.menu.main, menu);
		super.onCreateContextMenu(menu, v, menuInfo);
	}

	// 3:给上下文菜单项添加事件监听
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		<span style="color:#3333FF;">此处设置添加监听事件省略</span>
		}
		return super.onContextItemSelected(item);
	}
(3)弹出菜单:PopupMenu

//弹出菜单是从3。0才有的,所以api最低要求是 11
	public void showPopMenu(View v)
	{
		//创建弹出菜单对象
		//第二个参数是弹出菜单显示的参考位置,需要一个视图对象
		//点击按钮时,让弹出菜单在按钮旁边显示
		PopupMenu  pop = new PopupMenu(this, v);
		//把菜单项加入到弹出菜单中
		getMenuInflater().inflate(R.menu.main, pop.getMenu());
		
		//给菜单项添加事件监听
		pop.setOnMenuItemClickListener(new OnMenuItemClickListener() {
			@Override
			public boolean onMenuItemClick(MenuItem item) {
				//这里与前两个switch一致
				return false;
			}
		});
		<span style="color:#FF0000;">//显示菜单</span>
		pop.show();
	}




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 应用程序中创建菜单(Menu)可以为用户提供更加丰富和便捷的交互方式。以下是创建 Android 菜单的步骤: 1. 在 res 目录下创建一个名为 menu 的文件夹。 2. 在 menu 文件夹中创建一个 XML 文件,该文件将定义菜单项( MenuItem )和菜单组( MenuGroup )。 3. 在 Activity 中重写 `onCreateOptionsMenu()` 方法,该方法会在创建菜单时被调用。在该方法中使用 `MenuInflater` 加载菜单资源文件并将菜单项添加到菜单中。 4. 重写 `onOptionsItemSelected()` 方法,该方法会在用户选择菜单项时被调用。在该方法中根据菜单项的 ID 执行相应的操作。 以下是一个简单的示例代码: 在 menu 文件夹中创建一个名为 menu_main.xml 的文件,该文件定义了一个名为 menu_main 的菜单组和两个菜单项: ``` <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:id="@+id/menu_main" android:checkableBehavior="single"> <item android:id="@+id/menu_item1" android:title="菜单项1" /> <item android:id="@+id/menu_item2" android:title="菜单项2" /> </group> </menu> ``` 在 Activity 中重写 `onCreateOptionsMenu()` 方法: ``` @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, menu); return true; } ``` 在 Activity 中重写 `onOptionsItemSelected()` 方法: ``` @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item1: // 执行菜单项1的操作 return true; case R.id.menu_item2: // 执行菜单项2的操作 return true; default: return super.onOptionsItemSelected(item); } } ``` 这样就完成了 Android 菜单的创建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值