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 ...
随机推荐
- C++练习 | 不使用头插法逆转单链表
void D(PBook pHead) { PBook p,q,s; p=pHead->next->next; q=p->next; s=q->next; pHead-> ...
- Ansible 常用模块详解
经过前面的介绍,我们已经熟悉了 Ansible 的一些常识性的东西和如何编译安装Ansible,从本章开始我们将全面介绍 Ansible 的各种生产常用模块,这些也是我们使用 Ansible 的过程中 ...
- 右键添加cmd notePad++快捷键
1.将以下文字复制到txt文本,将txt修改为reg执行后,邮件菜单查. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directo ...
- CF1151F Sonya and Informatics
cf luogu 我们最终要的序列一定是前面全是0,后面全是1,假设总共\(m\)个0,那么这等价于前\(m\)位0的个数为\(m\).当然一开始可能数量没有\(m\) 那就把前\(m\)位0的数量作 ...
- MySQL索引之数据结构及算法原理
MySQL索引之数据结构及算法原理 MySQL支持多个存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.本文只关注BTre ...
- ASP.NET Core WebAPI帮助页--Swagger简单使用1.0
1.什么是Swagger? Swagger是一个规范且完整的框架,提供描述.生产.消费和可视化RESTful API,它是为了解决Web API生成有用文档和帮助页的问题. 2.为啥选用swagg ...
- Oracle DBA 学习总结
对于学习Oracle 数据库,应该先要了解Oracle 的框架.它有物理结构(由控制文件.数据文件.重做日志文件.参数文件.归档文件.密码文件组成) ,逻辑结构(表空间.段.区.块),内存分配( SG ...
- SpringMVC基础03——常用注解之@RequestMapping
1.用法 SpringMVC使用@RequestMapping注解,为控制器指定可以处理哪些URL请求,并且可以指定处理请求的类型(POST/GET),如果@RequestMapping没有指定请求的 ...
- 18、远程管理卡、戴尔划RAid
1.配置远程管理卡: 第一个iDRAC6是远程控制卡名称 第三个LAN ...是配置远程控制卡的 下图配置结束按Esc退出 最后按Esc保存退出 2.windows配置远程管理卡: 把下载下来的软件安 ...
- verilog 实现DDS
一.DDS的原理 直接数字频率合成器(DDS),功能是通过输入频率输入字从而实现改变输出信号的频率的功能,它所利用的原理就是虽然对于一段正弦信号来说其幅度值是非线性的,但是其相位的值却是线性增加的,如 ...