Menu菜单

Android默认最多只有6个菜单位,如果超过6个,会在第6个位置显示“更多”

Menu接口只是一个父接口,该接口下有2个子接口:

SubMenu代表一个普通菜单,可以包含1~N个MenuItem(形成菜单项)
ContextMenu代表一个子菜单,可以包含1~N个MenuItem(形成菜单项)

Menu接口定义了一下方法来添加菜单或菜单项

MenuItem add(int titleRes)添加一个新的菜单项
MenuItem add(int GroupId,int ItemId,int order,CharSequence title)添加一个新的处于group组的菜单项
MenuItem add(int GroupId,int ItemId,int order,int titleRes)添加一个新的处于group组的菜单项
MenuItem add(CharSequence title)添加一个新的菜单项
SubMenu addSubMenu(int titleRes)添加一个新的子菜单
SubMenu addSubMenu(int GroupId,int ItemId,int order,int titleRes)添加一个新的处于group组的子菜单
SubMenu addSubMenu(CharSequence title)添加一个新的子菜单
SubMenu addSubMenu(int GroupId,int ItemId,int order,CharSequence title)添加一个新的处于group组的子菜单

SubMenu继承了Menu,它代表了一个子菜单,额外提供了如下常用方法

SubMenu setHeaderIcon(Drawable icon)设置菜单头的图标
SubMenu setHeaderIcon(int iconRes)设置菜单头的图标
SubMenu  setHeaderTitle(int titleRes)设置菜单头的标题
SubMenu  setHeaderTitle(CharSequence title)设置菜单头的标题
SubMenu setHeaderView(View view)
使用View来设置菜单头

添加菜单或子菜单的步骤如下:

  1. 重写Activity的OnCreateOptionsMenu(Menu menu)方法,在该方法里调用Menu对象的方法来添加菜单项或子菜单

  2. 如果希望英语程序能响应菜单项的单击事件,重写Activity的onOptionsItemSelected(MenuItem mi)方法

<?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:text="用于测试的内容"
	android:editable="false"
	/>	
</LinearLayout>
package org.crazyit.menu;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.MenuItem.OnMenuItemClickListener;
import android.widget.EditText;
import android.widget.Toast;

/**
 * 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 MenuTest extends Activity
{
	// 定义字体大小菜单项的标识
	final int FONT_10 = 0x111;
	final int FONT_12 = 0x112;
	final int FONT_14 = 0x113;
	final int FONT_16 = 0x114;
	final int FONT_18 = 0x115;
	// 定义普通菜单项的标识
	final int PLAIN_ITEM = 0x11b;
	// 定义字体颜色菜单项的标识
	final int FONT_RED = 0x116;
	final int FONT_BLUE = 0x117;
	final int FONT_GREEN = 0x118;
	
	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 fontMenu = menu.addSubMenu("字体大小");
		// 设置菜单的图标
		fontMenu.setIcon(R.drawable.font);
		// 设置菜单头的图标
		fontMenu.setHeaderIcon(R.drawable.font);
		// 设置菜单头的标题
		fontMenu.setHeaderTitle("选择字体大小");		
		fontMenu.add(0, FONT_10, 0, "10号字体");
		fontMenu.add(0, FONT_12, 0, "12号字体");
		fontMenu.add(0, FONT_14, 0, "14号字体");
		fontMenu.add(0, FONT_16, 0, "16号字体");
		fontMenu.add(0, FONT_18, 0, "18号字体");
		// -------------向menu中添加普通菜单项-------------
		menu.add(0, PLAIN_ITEM, 0, "普通菜单项");
		// -------------向menu中添加文字颜色的子菜单-------------
		SubMenu colorMenu = menu.addSubMenu("字体颜色");
		colorMenu.setIcon(R.drawable.color);
		// 设置菜单头的图标
		colorMenu.setHeaderIcon(R.drawable.color);
		// 设置菜单头的标题
		colorMenu.setHeaderTitle("选择文字颜色");	
		colorMenu.add(0, FONT_RED, 0, "红色");
		colorMenu.add(0, FONT_GREEN, 0, "绿色");
		colorMenu.add(0, FONT_BLUE, 0, "蓝色");
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	// 菜单项被单击后的回调方法
	public boolean onOptionsItemSelected(MenuItem mi)
	{
		//判断单击的是哪个菜单项,并针对性的作出响应。
		switch (mi.getItemId())
		{
			case FONT_10:
				edit.setTextSize(10 * 2);
				break;
			case FONT_12:
				edit.setTextSize(12 * 2);
				break;
			case FONT_14:
				edit.setTextSize(14 * 2);
				break;
			case FONT_16:
				edit.setTextSize(16 * 2);
				break;
			case FONT_18:
				edit.setTextSize(18 * 2);
				break;
			case FONT_RED:
				edit.setTextColor(Color.RED);
				break;
			case FONT_GREEN:
				edit.setTextColor(Color.GREEN);
				break;
			case FONT_BLUE:
				edit.setTextColor(Color.BLUE);
				break;
			case PLAIN_ITEM:
				Toast toast = Toast.makeText(MenuTest.this
					, "您单击了普通菜单项" , Toast.LENGTH_SHORT);
				toast.show();
				break;
		}
		return true;
	}
}

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值