创建复选菜单和单选菜单

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<EditText 
	android:id="@+id/txt" 
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:editable="false"
	/>	
</LinearLayout>
package org.crazyit.menu;

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

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class CheckableMenu extends Activity
{
	// 定义性别菜单项的标识
	final int MALE = 0x111;
	final int FEMALE = 0x112;
	// 定义颜色菜单项的标识
	final int RED = 0x113;
	final int GREEN = 0x114;
	final int BLUE = 0x115;
	//定义3个颜色菜单项
	MenuItem[] items = new MenuItem[3];
	String[] colorNames = new String[]{"红色", "绿色" , "蓝色"};
	private EditText edit;
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		edit = (EditText) findViewById(R.id.txt);
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// -------------向menu中添加选择性别的子菜单-------------
		SubMenu genderMenu = menu.addSubMenu("您的性别");
		// 设置菜单的图标
		genderMenu.setIcon(R.drawable.gender);
		// 设置菜单头的图标
		genderMenu.setHeaderIcon(R.drawable.gender);
		// 设置菜单头的标题
		genderMenu.setHeaderTitle("选择您的性别");	
		genderMenu.add(0, MALE,  0, "男性");
		genderMenu.add(0, FEMALE, 0, "女性");
		//设置genderMenu菜单内0组菜单项为单选菜单项
		genderMenu.setGroupCheckable(0 , true , true);
		// -------------向menu中添加颜色的子菜单-------------
		SubMenu colorMenu = menu.addSubMenu("喜欢的颜色");
		colorMenu.setIcon(R.drawable.color);
		// 设置菜单头的图标
		colorMenu.setHeaderIcon(R.drawable.color);
		// 设置菜单头的标题
		colorMenu.setHeaderTitle("选择您最喜欢的颜色");
		//添加菜单项,并设置它为可勾选的菜单项
		items[0] = colorMenu.add(0, RED, 0, colorNames[0])
			.setCheckable(true);
		//添加菜单项,并设置它为可勾选的菜单项
		items[1] = colorMenu.add(0, BLUE, 0, colorNames[1])
			.setCheckable(true);		
		//添加菜单项,并设置它为可勾选的菜单项
		items[2] = colorMenu.add(0, GREEN, 0, colorNames[2])
			.setCheckable(true);
		//设置快捷键
		items[2].setAlphabeticShortcut('u');
		return super.onCreateOptionsMenu(menu);
	}
	@Override
	// 菜单项被单击后的回调方法
	public boolean onOptionsItemSelected(MenuItem mi)
	{
		//判断单击的是哪个菜单项,并针对性的作出响应。
		switch (mi.getItemId())
		{
			case MALE:
				edit.setText("您的性别为:男");
				//必须通过代码来改变勾选状态
				mi.setChecked(true);
				break;
			case FEMALE:
				edit.setText("您的性别为:女");
				//必须通过代码来改变勾选状态
				mi.setChecked(true);
				break;
			case RED:
				//必须通过代码来改变勾选状态
				if(mi.isChecked())
				{
					mi.setChecked(false);
				}
				else
				{
					mi.setChecked(true);
				}				
				showColor();
				break;
			case GREEN:
				//必须通过代码来改变勾选状态
				if(mi.isChecked())
				{
					mi.setChecked(false);
				}
				else
				{
					mi.setChecked(true);
				}
				showColor();
				break;
			case BLUE:
				//必须通过代码来改变勾选状态
				if(mi.isChecked())
				{
					mi.setChecked(false);
				}
				else
				{
					mi.setChecked(true);
				}
				showColor();
				break;
		}
		return true;
	}
	private void showColor()
	{
		String result = "您喜欢的颜色有:";
		for (int i = 0 ; i < items.length ; i++)
		{
			if(items[i].isChecked())
			{
				result += colorNames[i] + "、";
			}
		}
		edit.setText(result);
	}
}


转载于:https://my.oschina.net/mutouzhang/blog/207154

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值