android 快捷菜单创建,Android创建复选菜单项和单选菜单项

有时候我们希望创建的菜单项是单选菜单项或者多选菜单项,则可以调用MenuItem的如下方法

setCheckable(boolean checkable)

设置该菜单项是否可以被勾选,调用上面的方法之后的菜单项默认是多选菜单项

setGroupCheckable(int group,boolean checkable,boolean exclusive);

设置group组里的所有菜单项是否可以勾选,如果将exclusive设为true,那么他们将是一组单选菜单项

setAlphabeticShortcut(char alphaChar)

设置字母快捷键

setNumericShortCut(char numericChar)

设置字母快捷键

setShortCut(char numericChar,char alphaChar)

同时设置两种快捷键

点击菜单按钮,才会弹出菜单

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

xml文件无需改动

java文件

package com.example.checkablemenu; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.widget.TextView; public class MainActivity extends Activity { TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text=(TextView) super.findViewById(R.id.text); } @Override public boolean onCreateOptionsMenu(Menu menu) { //创建车型菜单 SubMenu  carStyle=menu.addSubMenu("车型"); //弹出框的标题 carStyle.setHeaderTitle("请选择车型"); //弹出框的图标 carStyle.setHeaderIcon(R.drawable.ic_launcher); carStyle.add(0,0x111,0,"奔驰"); carStyle.add(0,0x112,0,"宝马"); carStyle.add(0,0x113,0,"奥迪"); carStyle.add(0,0x114,0,"大众"); //设置carStyle菜单内0组的菜单项为单选菜单项 /** * setGroupCheckAble(int group,boolean checkable,boolean exclusive) * 设置group组里的所有菜单项是否可以勾选 * exclusive设为true,将是一组单选菜单 */ carStyle.setGroupCheckable(0, true, true); //创建地区菜单 SubMenu area=menu.addSubMenu("地区"); area.setHeaderIcon(R.drawable.ic_launcher); area.setHeaderTitle("选择地区"); area.add(0, 0x211, 0, "北京").setCheckable(true); area.add(0, 0x212, 0, "上海").setCheckable(true); area.add(0, 0x213, 0, "山东").setCheckable(true); area.add(0, 0x214, 0, "杭州").setCheckable(true); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { //判断是哪个多选菜单被点击了 switch(item.getItemId()){ case  0x211: if(item.isChecked()){ item.setChecked(false); } else{ item.setChecked(true); } break; case  0x212: if(item.isChecked()){ item.setChecked(false); } else{ item.setChecked(true); } break; case  0x213: if(item.isChecked()){ item.setChecked(false); } else{ item.setChecked(true); } break; case  0x214: if(item.isChecked()){ item.setChecked(false); } else{ item.setChecked(true); } break; } return true; } }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值