博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Menu菜单
阅读量:6433 次
发布时间:2019-06-23

本文共 4016 字,大约阅读时间需要 13 分钟。

hot3.png

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)方法

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: * 
site: 
crazyit.org  * 
Copyright (C), 2001-2012, Yeeku.H.Lee * 
This program is protected by copyright laws. * 
Program Name: * 
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

你可能感兴趣的文章
ubuntu 常用生产环境部署配置测试调优
查看>>
【JS】//将中文逗号转换为英文逗号
查看>>
在VS2012中实现Ext JS的智能提示太简单了
查看>>
Extnet Direct 提交后台事件文件下载设置
查看>>
邻接矩阵与二叉排序树
查看>>
CSS选择器
查看>>
购物车练习
查看>>
js实现在表格中删除和添加一行
查看>>
SOCKET简单爬虫实现代码和使用方法
查看>>
导出excel数字变成科学计数法解决办法
查看>>
跨域解决方案汇总
查看>>
In App Purchase
查看>>
js判断对象的类型的四种方式
查看>>
ETL (数据仓库技术)
查看>>
count(*)与count(1)、count('xxx')等在使用语法方面的区别
查看>>
每日踩坑 2018-11-26 MVC Razor ActionLink 生成的URL中多生成了一个参数 ?length=n
查看>>
linux 信号
查看>>
记一次简单的vue组件单元测试
查看>>
npm: 6.5.0-next.0 should be >= 3.0.0
查看>>
Golang定时器陷阱
查看>>