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)

同时设置两种快捷键

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


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;
}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值