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>
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; } }
一、界面布局
只有一个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; }
(如需转载学习,请标明出处)