文档章节

创建复选菜单和单选菜单

mutouzhang
 mutouzhang
发布于 2014/03/11 14:43
字数 611
阅读 31
收藏 0
<?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);
	}
}


© 著作权归作者所有

下一篇: Menu菜单
mutouzhang
粉丝 6
博文 190
码字总数 91235
作品 0
洛阳
程序员
私信 提问
Android开发指南-用户界面-菜单特性

菜单特性Menu Features 下面是适用于大多数菜单项的一些其他的特性。 菜单组Menu groups 当往菜单中添加新项时,你可以选择把它包含在一个组中。一个菜单组是一些可以共享某些特征的菜单项的...

JavaGG
2010/03/24
1K
0
Android 用户界面---菜单(Menus 三)

弹出菜单是停靠在一个View上的一个模式菜单。如果View对象下方有空间,那么弹出菜单将显示在停靠对象的下方,否则会显示在上方。这是非常有用的: 1. 给指定内容的操作提供一个溢出式菜单(如...

长平狐
2012/10/16
595
0
小博老师解析Java核心技术 ——JSwing高级菜单制作

[引言] 我们在学习Java编程的时候,如果需要开发客户端窗体类型的程序,可以使用JDK中的awt和swing库。本文开始小博老师就继续为大家演示Java窗体编程中的菜单栏制作,今天主要讲解的菜单栏中...

博为峰教研组
2016/12/26
8
0
Android菜单

菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载Android系统的手机都要有一个“menu”键,即菜单键,由此可见菜单在Android程序中的重要与特殊,其中Android的SDK提供了三...

晨曦之光
2012/05/16
852
0
Android应用资源---菜单资源类型(Menu)

菜单资源定义了应用程序的菜单(选项菜单、内容菜单或子菜单),这些菜单能够使用MenuInflater对象来装载。 文件位置(FILE LOCATION): res/menu/filename.xml 文件名被用作资源ID。 被编译...

长平狐
2012/10/16
110
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
1
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
2
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部