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 ...
随机推荐
- # 组合数学-组合数+lacus定理
目录 数论-组合数+lacus定理 组合数计算 lacus定理-大组合数取模 数论-组合数+lacus定理 组合数计算 为避免爆long long,\(20!\)就达到了long long 的范围,采 ...
- golang 组装返回json数据,提供api接口
model里 package model type Setting struct { Key string `gorm:"primary_key" json:"key&q ...
- 01:keepalive高可用集群
1.1 keepalived高可用软件介绍 1.keepalived--监控检查 注:keepalive软件有两种功能:监控检查.VRRP冗余协议 1. keepalive的作用是检测web服务器的状 ...
- 计算机和python
计算机基础知识 CPU 人类的大脑 运算和处理问题 内存 临时存储数据 断电就消失了 硬盘 永久 存储数据 操作系统是一个(特殊)的程序,调度硬件和软件之间的数据交互 python的应用和历史 IT, ...
- python_0基础开始_day04
第四节 一.列表 list 数据类型之一,存储大量的,不同类型的数据 列表中只要用逗号隔开的就是一个元素 有序可变的. 1.1列表的索引 列表和字符串一样也拥有索引,但是列表可以修改: lst = [ ...
- Spring框架是怎么解决Bean之间的循环依赖的 (转)
问题: 循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环.比如A依赖于B,B依赖于C,C又依赖于A.如下图: 如何理解“依赖”呢,在Spring中有: 构造器循 ...
- Map<k,v>接口
https://docs.oracle.com/javase/8/docs/api/java/util/Map.html public interface Map<K,V> K—key,V ...
- 最小生成树之Prim Kruskal算法(转)
最小生成树 首先,生成树是建立在无向图中的,对于有向图,则没有生成树的概念,所以接下来讨论的图均默认为无向图.对于一个有n个点的图,最少需要n-1条边使得这n个点联通,由这n-1条边组成的子图则称为原 ...
- python+minicap(二)
一.push文件至手机中 minicap 的使用有很强的针对性,针对不同架构的CPU和SDK制作了不同的 "minicap" 和 "minicap.so" 文件 ...
- Centos固定IP
centos7 联网 在虚拟机中以最小化方式安装centos7,后无法上网,因为centos7默认网卡未激活. 而且在sbin目录中没有ifconfig文件,这是因为centos7已经不使用 ifco ...