`
luren85
  • 浏览: 86086 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

android 自定义menu背景

阅读更多

    代码比较简单,直接上。

package com.mys.activity;

import android.app.Activity;
import android.content.Context;
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.MenuItem;
import android.view.View;
import android.view.LayoutInflater.Factory;
import android.widget.Toast;
/**
 * 
 * <p>
 * DATE:  2011-3-1 下午01:21:25
 * <p>
 * HISTORY: 1.0
 * 
 * @version 1.0
 * @author mys(牟玉石)
 * @since java jdk1.6.0_06<br>
 * @beanid <br>
 *
 * 功能描述:<br>
 */
public class MainActivity extends Activity {
	/** Called when the activity is first created. */

	private static final int ABOUT = 1;
	private static final int EXIT = 2;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		// 这里可以使用xml文件也可以使用代码方式,代码方式比较灵活一些~~~
		// MenuInflater inflater = new MenuInflater(getApplicationContext());
		// inflater.inflate(R.menu.options_menu, menu);
		menu.add(0, ABOUT, 1, "关于");
		menu.add(0, EXIT, 2, "退出");

		setMenuBackgroud();
		return true;
	}

	/**
	 * 处理点击菜单
	 * 
	 * @param item
	 * @return
	 * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
	 * @author mys at 2011-3-1 下午01:21:01
	 */
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		int id = item.getItemId();
		switch (id) {
		case ABOUT: //如果使用xml方式,这里可以使用R.id.about
			Toast.makeText(this, "点击了about菜单", Toast.LENGTH_SHORT).show();
			break;
		case EXIT: //同上
			android.os.Process.killProcess(android.os.Process.myPid());
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * 设置背景
	 * 
	 * @author mys at 2011-3-1 下午01:04:29
	 */
	private void setMenuBackgroud() {
		// TODO Auto-generated method stub
		getLayoutInflater().setFactory(new Factory() {

			@Override
			public View onCreateView(String name, Context context,
					AttributeSet attrs) {
				// TODO Auto-generated method stub
				if (name
						.equals("com.android.internal.view.menu.IconMenuItemView")) {
					LayoutInflater f = getLayoutInflater();
					try {
						final View view = f.createView(name, null, attrs); // 尝试创建我们自己布局
						new Handler().post(new Runnable() {

							@Override
							public void run() {
								// TODO Auto-generated method stub
								view
										.setBackgroundResource(R.drawable.background); // 设置背景为我们自定义的图片
							}
						});
						return view;

					} catch (InflateException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (ClassNotFoundException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				return null;
			}
		});
	}
}
分享到:
评论
3 楼 619471854 2013-11-04  
把 getLayoutInflater()改为 (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE)
2 楼 shangfyok 2011-07-22  
改为android2.2版,并在2.2版的虚拟机上运行成功了!

不知道为什么2.3版的不行
1 楼 shangfyok 2011-07-20  
android.view.InflateException: Binary XML file line #17: Error inflating class com.android.internal.view.menu.IconMenuItemView

这个异常是什么原因?

相关推荐

    Android 自定义菜单

    Android2.2版本中,如果你要修改菜单默认的背景颜色,网络上有许多的方法。在此就不说了。但是,如果要在2.2以上的版本修改菜单的样式,例如修改背景颜色,图片等,使用这些方法是没有任何作用的。因此自己写了一个...

    android 自定义Android菜单背景的代码

    如何自定义Android菜单背景呢? 默认的情况下Android系统的菜单是白色的,下面的例子可以通过自定义的xml布局实现个性化的menu

    android开发入门与实战(下)

    1.2 Android的背景 1.2.1 Android的历史 1.2.2 Android的发展 1.3 我的Android我做主 1.3.1 开发基于Android平台的应用 1.3.2 参加Android开发者大赛 1.3.3 个人英雄主义再现——得到更多人的认可和尊重 1.3.4 获得...

    android 自定义菜单 使用PopupWindow实现菜单的各种效果

    此为示例代码,详细讲解请参考博文: http://blog.csdn.net/tangron/article/details/20907243 如对资源内容有疑问,请到博客中留言。 欢迎大家评阅,谢谢

    Android编程实现自定义系统菜单背景的方法

    主要介绍了Android编程实现自定义系统菜单背景的方法,涉及Android菜单menu的实现及背景图片的相关操作技巧,需要的朋友可以参考下

    Android代码-模糊线条动态壁纸

    sunlight Project includes 3D live ...Usage: Home-&gt;Press Menu-&gt;Wallpapers-&gt;LiveWallpapers. You can open settings by double tapping on the screen. If your device supports non squared textures, consid

    Android入门到精通源代码.

    8.4 应用实例详解:播放背景音乐 8.4.1 实例分析 8.4.2 实例实现 第9章 Android中的数据存储 9.1 使用Preferences存储数据 9.1.1 访问Preferences的API 9.1.2 使用XML存储Preferences数据 9.2 使用文件存储数据 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Android插件

    根据布局文件快速生成对应的Activity,Fragment,Adapter,Menu。 4.Android Parcelable code generator JavaBean序列化,快速实现Parcelable接口。 5.Android Methods Count 显示依赖库中得方法数 6....

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--自定义控件风格和全局背景 |--自定义组合控件 |--自定义配置文件资源 |--自定义颜色状态选择资源 |--自定义颜色资源 |--获取网页的源码 |--读取外部资源的文件3种方式 |--读取手机内的短信 |--通信之Application...

    疯狂Android讲义源码

     2.3.3 使用9Patch图片作为按钮背景 68  2.3.4 单选按钮(RadioButton)和复选  框(CheckBox)介绍与应用 69  2.3.5 状态开关按钮(ToggleButton)  的功能与用法 71  2.3.6 时钟(AnalogClock和Digital  ...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Android开发资料合集-World版!

    4.5.3、自定义MENU背景 62 4.5.4、触发menu 64 4.5.5、Context Menu和Options Menu菜单的区别 64 4.5.6、Context menus for expandable lists 64 4.6、LISTVIEW 66 4.6.1、ListView自定义分割线 66 4.6.2、LIST例一 ...

    Android实现底部弹出PopupWindow背景逐渐变暗效果

    在Android开发中,经常需要通过点击某个按钮弹出对话框或者选择框,通过Dialog或者PopupMenu、PopupWindow都能实现。 这里主要介绍后两者:PopupMenu、PopupWindow的实现...menu xmlns:android=http://schemas.androi

    Android 开发技巧

    4.5.3、自定义MENU背景 62 4.5.4、触发menu 64 4.5.5、Context Menu和Options Menu菜单的区别 64 4.5.6、Context menus for expandable lists 64 4.6、LISTVIEW 66 4.6.1、ListView自定义分割线 66 4.6.2、LIST例一 ...

    Android实训实习报告总结.docx

    自定义控件,如对话框背景等,或去google code找些开源的代码下来研究,学习人家的设计思想、模块功能的划分、代码组织结构等知识 这个过程中,涉及到的知识比较多,如版本管理工具SVN、Git、Mercurial,如设计模式...

Global site tag (gtag.js) - Google Analytics