android之OptionMenu
一、现在我给大家介绍两个不同版本的模拟器(2.3.3和4.0.3)
1、布局文件
(1)打开“res/layout/activity_main.xml”文件。
先看mian布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> </RelativeLayout>
(2)打开“res/menu/main.xml”文件。 输入以下代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/connect"
android:orderInCategory=""
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_send"
android:background="#66FFFFFF"
android:title="连接" /> <item android:id="@+id/disconnect"
android:orderInCategory=""
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:title="断开" /> <item android:id="@+id/search"
android:orderInCategory=""
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_search"
android:title="发现" /> <item android:id="@+id/view"
android:orderInCategory=""
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_view"
android:title="查看" /> <item android:id="@+id/help"
android:orderInCategory=""
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_help"
android:title="帮助" /> <item android:id="@+id/exit"
android:orderInCategory=""
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_revert"
android:title="退出" /> </menu>
2、程序文件
打开“src/com.genwoxue.optionsmenu/MainActivity.java”文件。
然后输入以下代码:
package com.example.optionmenu1; import android.content.Context;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = new MenuInflater(getApplicationContext());
inflater.inflate(R.menu.main, menu);
setMenuBackground();
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
String info = "";
switch (item.getItemId()) {
case R.id.connect:
info = "connect";
break;
case R.id.disconnect:
info = "disconnect";
break;
case R.id.exit:
info = "exit";
break;
case R.id.help:
info = "Help";
break;
case R.id.search:
info = "search";
break;
case R.id.view:
info = "view";
break;
default:
info = "NULL";
break;
}
Toast toast = Toast.makeText(this, info, Toast.LENGTH_SHORT);
toast.show();
return super.onOptionsItemSelected(item);
}
// 关键代码为重写Layout.Factory.onCreateView()方法自定义布局
protected void setMenuBackground() {
MainActivity.this.getLayoutInflater().setFactory(new android.view.LayoutInflater.Factory() {
/**
* name - Tag name to be inflated.<br/>
* context - The context the view is being created in.<br/>
* attrs - Inflation attributes as specified in XML file.<br/>
*/
@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
// 指定自定义inflate的对象
if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
try {
LayoutInflater f = getLayoutInflater();
final View view = f.createView(name, null, attrs);//尝试创建我们自己的布局
new Handler().post(new Runnable() {
public void run() {
// 设置背景图片
view.setBackgroundResource(R.drawable.ic_launcher);
}
});
return view;
} catch (InflateException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return null;
}
});
}
}
3、运行结果
(1)2.3.3模拟器运行结果

(2)4.0.3模拟器运行结果

(3)、如果你已经习惯了Android2.x版本的样式,你一定会怀疑是不是搞错了,这是OptionsMenu菜单吗?
一点不错,Android4.0菜单就变成这个样式了!如果你想要以前2.3.3版本样式,我们在<activity ……></activity>中添加了android:theme="@android:style/Theme"之后,我们再来看一下效果。只是全变成黑色。
如果你想改变menu的背景颜色,你可以去问度娘。。。

补充说明:
Android4.0及以上版本,更推荐你使用ActionBar和PopupWindow!这样的效果会更好。
android之OptionMenu的更多相关文章
- Android:OptionMenu
MainActivity: package com.example.optionmenu; import android.content.Intent; import android.os.Bundl ...
- Android 菜单(OptionMenu)
菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 一.概述 ...
- 【转】Android 菜单(OptionMenu)大全 建立你自己的菜单--不错
原文网址:http://www.cnblogs.com/salam/archive/2011/04/04/2005329.html 菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中, ...
- Android 菜单(OptionMenu)大全 建立你自己的菜单
转自:http://www.cnblogs.com/salam/archive/2011/04/04/2005329.html 菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单 ...
- Android 动态控制OptionMenu的显示与隐藏
在有些场景下,可能需要动态的显示和隐藏optionmenu,可以这样实现:如果在activity中默认实现了方法: onCreateOptionsMenu(Menu menu) 那么该OptionMe ...
- OptionsMenu
菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu),今天这讲是O ...
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
菜单的概念,现在已经很普及了.Windows系统.Mac.桌面版Linux.Java Swing等,都有可视化菜单.一.Android平台3种菜单 选项菜单(OptionMenu).上下文菜单(Co ...
- Android OptionMenu
1.Java package com.fish.helloworld; import android.app.Activity; import android.content.Context; imp ...
- android 为activity添加optionMenu选项菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android: ...
随机推荐
- FireFox中iframe的返回上页问题
-----已测试,可以使用----- 原文地址链接:http://fansofjava.iteye.com/blog/1019852 在写静态页面过程中遇到了FF的history.back()和his ...
- CentOS6.5 mysql 5.5安装
CentOS 6 mysql5.5安装配置 1 安装所需软件 2 安装cmake 3 tar.gz形式安装mysql 4 配置与启动 MySQL自5.5版本以后,就开始使用cmake编译工具了.tar ...
- 如何管理linux开机自启服务
如何管理linux开机自启服务? 自启动服务非常重要,例如 (1)需要手动添加希望自启的服务,如安装svn后没有自动添加,就需要我们手动加入(2)安装某些程序后,自动加到自启动了,但我们不需要,需要手 ...
- idea首次提交项目
http://www.cnblogs.com/exmyth/p/6133289.html
- BootStrapt iCheck表单美化插件使用方法详解(含参数、事件等) 全选 反选
特色: 1.在不同浏览器(包括ie6+)和设备上都有相同的表现 — 包括 桌面和移动设备 2.支持触摸设备 — iOS.Android.BlackBerry.Windows Phone等系统 4.方便 ...
- HTML5和CSS3登录页面制作实录
本文详细介绍使用HTML5 和CSS3 制作一个登录页面的完整过程. View demo login.html <form id="login"> <h1> ...
- redis初步入门
http://blog.csdn.net/u014419512/article/details/25693425 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 环境 安装 ...
- 拓扑编号 vijos1790
题意就是拓扑排序,要求1的序号尽可能小,然后2的序号尽可能小,3,4... 一开始很容易想到直接贪心,每次选一个入度为0的点,如果有多个,就选编号最小的那个,但是很容易找到反例. 看了下题解,应该是反 ...
- ubuntu arm妙算加载cp210x驱动
在妙算TK1上安装ros后,插上usb串口竟然没有驱动 无奈装 从http://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers. ...
- Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。
http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...