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_(菜单)选项菜单的更多相关文章

  1. Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)

    菜单的概念,现在已经很普及了.Windows系统.Mac.桌面版Linux.Java Swing等,都有可视化菜单.一.Android平台3种菜单  选项菜单(OptionMenu).上下文菜单(Co ...

  2. 用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示。

    用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示. 原因:在为一个元素绑定hover事件之后,用户把光标移入元素 ...

  3. 安卓开发_浅谈OptionsMenus(选项菜单)

    Android平台下所提供的菜单大体上可分为三类:选项菜单.上下文菜单和子菜单. 当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单.但这个功能需要开 ...

  4. Menu之选项菜单

    Android有三种形式的菜单:选项菜单(optionMenu).上下文菜单(ContextMenu).子菜单(subMenu).最常用的是选项菜单,该菜单在点击menu按键后会在对应的Activit ...

  5. Android-操作栏之选项菜单

    回答第一个问题:什么是选项菜单?答:选项菜单就是可以显示在操作栏上的菜单. 菜单的视图需要建立在res/menu下. 其中,showAsAction属性用于指定菜单选项是显示在操作栏还是隐藏到溢出菜单 ...

  6. Android开发系列(二十八):使用SubMenu创建选项菜单

    大部分手机上边都会有一个"MENU"键,在一个应用安装到手机上之后,能够通过"MENU"显示该应用关联的菜单. 可是,从Android 3.0開始,Androi ...

  7. OptionMenu选项菜单

    #选项菜单 from tkinter import * root = Tk() variable=StringVar() variable.set('one') w = OptionMenu(root ...

  8. 点击菜单选项,右侧主体区新增子界面(Tab)的实现

    今天是2019年小年后一天,还有三天回家过年. 今天记录一下一种前端页面的效果的实现,这种效果很常见,一般用于网站后台系统的前端页面.一般后台系统会分为顶部导航栏,左边的菜单栏和右边的主体区.有一种效 ...

  9. Android开发 ---xml构建选项菜单、上下文菜单(长按显示菜单)、发通知、发送下载通知

    1.activity_main.xml 描述: 定义了一个TextView和三个按钮 <?xml version="1.0" encoding="utf-8&quo ...

随机推荐

  1. Memcached安装 常用指令

    Memcached 源码安装 # 安装依赖yum install -y gcc gcc-c++ automake autoconf make cmake libevent-devel.x86_64# ...

  2. HTML(上)

    目录 HTML(上) 浏览器 HTML 什么是HTML HTML的作用 编写HTML的规范 HTML结构 HTML常用标签 HTML标签速记 HTML(上) 浏览器 浏览器也是一个客户端 #这是一个服 ...

  3. python网络爬虫(3)python爬虫遇到的各种问题(python版本、进程等)

    import urllib2 源地址 在python3.3里面,用urllib.request代替urllib2 import urllib.request as urllib2 import coo ...

  4. [Nest] 03.nest之提供者 provider

    提供者 provider 提供程序是 Nest 的一个基本概念.许多基本的 Nest 类可能被视为提供者 - service,repository, factory, helper 等等. 他们都可以 ...

  5. 使用python进行pdf文件分割

    Python代码 import os from pyPdf import PdfFileWriter, PdfFileReader def split(pdf_file, delta, output_ ...

  6. java中的全局变量、局部变量与静态常量的区别

    java中的变量类型分类: 类变量:独立于方法之外的变量,用 static 修饰.实例变量:独立于方法之外的变量,不过没有 static 修饰.局部变量:类的方法中的变量.比如: public cla ...

  7. python 短信邮件

    短信邮件 hashlib​- md5:非对称加密,不可逆的,经常用于加密密码然后存储​- 示例:​ ```python import hashlib ​ # 创建hash对象,可以指定需要加密的字符串 ...

  8. ldap搭建

    yum install openldap openldap-servers openldap-clients -y #检查是否安装成功 slapd -VVopenldap的配置文件都在/etc/ope ...

  9. python-装饰(高阶函数)

    python-装饰(高阶函数) 高阶函数 1.把一个函数名当做实参传给另外一个函数(在不修改被装饰函数源代码) 2.返回值 中包含函数名 高阶函数实现1的功能 def bar(): print(&qu ...

  10. plsql之导入数据乱码

     问题现象: 首先是使用了plsql 8.0版本客户端导入 ANSI as UTF-8 的字符集 格式sql 文件进行数据的导入, 然后检查了所有的系统环境的字符集和plsql 的字符集 都OK 的但 ...