Android_(菜单)选项菜单
Android系统中菜单分为Options Menu、Context Menu、Sub Men三种
Options Menu和Context Menu属于一级菜单
Sub Menu属于Options Menu和Context Menu的子菜单
Sub Menu下不能再添加菜单,Android最多只能支持两级菜单
选项菜单(Options Menu)在当前Activity中按下菜单键就会显示
Android4.0一下默认在屏幕底部(我也不知道我的为什么默认是在右上角!!!)
常用以下方法使用 选项菜单
onCreateOptionsMenu(Menu menu):创建菜单,会在菜单第一次显示时调用。
onPrepareOnptionsMenu(Menu menu): 准备显示菜单,菜单每次显示前调用。
onOptionsItemSelected(MenuItem item):菜单项被选中后处理选中的菜单项。
onMenuOpened(int featureId,Menu menu):菜单被打开的事件。
onOptionsMenuClosed(Menu menu):菜单被关闭的事件。
openOptionsMenu():调用打开菜单
closeOptionsMenu():调用关闭菜单
运行截图:



程序结构:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.asus.gary_03.MainActivity"> <EditText
android:id="@+id/txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="输入文字"
android:editable="false"
android:inputType="textPersonName" />
</LinearLayout>
activity_main.xml
package com.example.asus.gary_03; import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { //定义字体大小菜单项的标识
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
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText)findViewById(R.id.txt);
} public boolean onCreateOptionsMenu(Menu menu) {
//向menu中添加字体大小的子菜单
SubMenu fontMenu = menu.addSubMenu("字体大小");
//设置菜单的图标
fontMenu.setIcon(android.R.drawable.btn_plus);
//设置菜单头的图标
fontMenu.setHeaderIcon(android.R.drawable.btn_default);
//设置菜单头的标题
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(android.R.drawable.btn_plus);
colorMenu.setHeaderIcon(android.R.drawable.btn_default);
colorMenu.setHeaderTitle("选择文字的颜色");
colorMenu.add(0,FONT_RED,0,"红色");
colorMenu.add(0,FONT_GREEN,0,"绿色");
colorMenu.add(0,FONT_BLUE,0,"蓝色"); return super.onCreateOptionsMenu(menu);
} 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(MainActivity.this,"单击普通菜单项",Toast.LENGTH_SHORT);
toast.show();
break;
}
return true;
} }
MainActivity
一、界面布局
只有一个EditText用来显示测试的内容
二、实现程序
1、向menu中添加字体大小的子菜单
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(android.R.drawable.btn_plus);
colorMenu.setHeaderIcon(android.R.drawable.btn_default);
colorMenu.setHeaderTitle("选择文字的颜色");
colorMenu.add(0,FONT_RED,0,"红色");
colorMenu.add(0,FONT_GREEN,0,"绿色");
colorMenu.add(0,FONT_BLUE,0,"蓝色");
2、实现对子菜单项的选择
onOptionsItemSelected(MenuItem item):菜单项被选中后处理选中的菜单项。
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(MainActivity.this,"单击普通菜单项",Toast.LENGTH_SHORT);
toast.show();
break;
}
return true;
}
Android_(菜单)选项菜单的更多相关文章
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
菜单的概念,现在已经很普及了.Windows系统.Mac.桌面版Linux.Java Swing等,都有可视化菜单.一.Android平台3种菜单 选项菜单(OptionMenu).上下文菜单(Co ...
- 用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示。
用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示. 原因:在为一个元素绑定hover事件之后,用户把光标移入元素 ...
- 安卓开发_浅谈OptionsMenus(选项菜单)
Android平台下所提供的菜单大体上可分为三类:选项菜单.上下文菜单和子菜单. 当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单.但这个功能需要开 ...
- Menu之选项菜单
Android有三种形式的菜单:选项菜单(optionMenu).上下文菜单(ContextMenu).子菜单(subMenu).最常用的是选项菜单,该菜单在点击menu按键后会在对应的Activit ...
- Android-操作栏之选项菜单
回答第一个问题:什么是选项菜单?答:选项菜单就是可以显示在操作栏上的菜单. 菜单的视图需要建立在res/menu下. 其中,showAsAction属性用于指定菜单选项是显示在操作栏还是隐藏到溢出菜单 ...
- Android开发系列(二十八):使用SubMenu创建选项菜单
大部分手机上边都会有一个"MENU"键,在一个应用安装到手机上之后,能够通过"MENU"显示该应用关联的菜单. 可是,从Android 3.0開始,Androi ...
- OptionMenu选项菜单
#选项菜单 from tkinter import * root = Tk() variable=StringVar() variable.set('one') w = OptionMenu(root ...
- 点击菜单选项,右侧主体区新增子界面(Tab)的实现
今天是2019年小年后一天,还有三天回家过年. 今天记录一下一种前端页面的效果的实现,这种效果很常见,一般用于网站后台系统的前端页面.一般后台系统会分为顶部导航栏,左边的菜单栏和右边的主体区.有一种效 ...
- Android开发 ---xml构建选项菜单、上下文菜单(长按显示菜单)、发通知、发送下载通知
1.activity_main.xml 描述: 定义了一个TextView和三个按钮 <?xml version="1.0" encoding="utf-8&quo ...
随机推荐
- vscode 插件 配置
第一页 第二页 第三页 settings.json配置 { "editor.fontSize": 20, "files.autoSave": "off ...
- C# 面向对象1(类和对象的概念)
1.面向过程-->面向对象 面向过程:面向的是完成这件事儿的过程,强调的是完成这件事儿的动作. 2.面向过程的思想: 以上的,需求一更改,会导致不同的方法,一一去更改. 3.面向对象的思想:找个 ...
- 104、验证Swarm数据持久性 (Swarm11)
参考https://www.cnblogs.com/CloudMan6/p/8016994.html 上一节我们成功将 nfs 的volume挂载到 Service上,本节验证 Failover时 ...
- centos查看实时网络带宽占用情况方法【转】
Linux中查看网卡流量工具有iptraf.iftop以及nethogs等,iftop可以用来监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等. centos安装iftop的命令如下: ...
- 帝国cms 反馈
<form name='feedback' method='post' enctype='multipart/form-data' action='/e/enews/index.php' ons ...
- NTL 库函数
NTL是一个高性能,可移植的C ++库,为任意长度的整数提供数据结构和算法; 可用于整数和有限域上的向量,矩阵和多项式; 可用于任意精度浮点运算. NTL为以下方面提供高质量的最先进算法实现: 任意长 ...
- 关于IDEA,多服务运行 Services -> Run Dashboard 部分服务添加变灰色,限制使用5个启动类,重启之后需要重新添加,服务在 Run Dashboard 中的显示排序问题,不显示 Services(Run Dashboard)
我的IDEA版本为最新版本 变灰色的原因就是因为右键删除了那个启动的主配置类,然后就会显示灰色,再次打开这个醒目,就不会在Run Dashboard中显示这个主配置类了 解决方法 如果你要 调整这些服 ...
- qq游戏IE组件停止工作
你可以下载一个腾讯电脑管家,利用电脑诊所里的腾讯游戏专区里的“网页游 游戏玩不了”这一项修复一下即可.我遇见一次,修复之后就解决了.个人认为是Adobe Flash出问题了.祝你玩的开心.
- 利用nethogs查看哪些进程占用网络带宽
一.安装nethogs centos6版本安装: 1.安装依赖包 [root@hlsms-fensheng- ~]# yum install ncurses* 已加载插件:fastestmirror, ...
- 个人作业4-ALpha项目测试
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.cnbl ...