`
luren85
  • 浏览: 86866 次
  • 性别: 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使用popupwindow自定义menu菜单

    下面是一段示例代码,展示了如何创建一个简单的自定义menu菜单: ```java // 加载布局 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View popupView = ...

    android自定义弹出menu

    本示例“android自定义弹出menu”着重介绍了如何创建一个类似于QuickContactBadge的自定义菜单,它具有出色的动画效果,提升了应用的用户体验。 QuickContactBadge是Android SDK中一个用于快速联系的组件,点击后...

    android自定义通用PopupWindow

    在Android开发中,`PopupWindow` 是一个非常实用的组件,它允许我们创建弹出式窗口,用于显示一些临时信息或者交互操作。本教程将详细讲解如何封装一个通用的`PopupWindow`,以便在项目中复用,降低代码冗余,提高...

    Android提高十八篇之自定义Menu(TabMenu)

    6. **兼容性考虑**:在设计自定义Menu时,需要考虑到不同设备和Android版本的兼容性问题,确保在各种环境下都能正常工作。 源码分析对于理解自定义TabMenu的实现至关重要。通过阅读和学习他人的实现,我们可以借鉴...

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

    在Android开发中,自定义菜单背景能够为应用增添独特的风格,提升用户体验。默认情况下,Android系统的菜单背景通常是白色,但通过编程方式,我们可以将其替换为任何我们想要的图像或颜色。下面将详细介绍如何自定义...

    自定义Menu

    自定义Menu是Android开发中的一个重要概念,它允许开发者根据应用的需求创建个性化的菜单项,以提供更为丰富的用户体验。在Android应用中,Menu主要用于在特定场景下显示一系列操作选项,如在活动(Activity)的选项...

    对话框样式的自定义popmenu

    5. **自定义背景和动画**:为了实现泡泡效果,可以创建一个自定义的背景`drawable/bubble_background.xml`,并添加阴影和圆角。此外,还可以通过动画库(如`androidx.transition`)添加弹出和消失的动画,以增加用户...

    android menu自定义菜单 Demo

    本示例"android menu自定义菜单 Demo"将向我们展示如何在Android应用程序中创建和定制菜单项,以提供更加丰富的交互功能。让我们深入探讨一下这个话题。 首先,菜单在Android中主要用于在不占据屏幕主要空间的情况...

    Android DropDownMenu下拉菜单.zip

    `Android DropDownMenu`基于`Spinner`组件进行自定义,`Spinner`是Android SDK中内置的一种下拉选择控件。然而,`Spinner`的默认样式可能不能满足所有设计需求,因此开发者经常需要对其进行定制,以实现更美观或更...

    android自定义标题栏

    要使用`Toolbar`,你需要在布局文件中添加`&lt;androidx.appcompat.widget.Toolbar&gt;`元素,并设置相应的属性,例如高度、背景颜色或图片等。 ```xml &lt;androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" ...

    Android自定义标题栏(并加入返回按钮)demo

    可以使用Android的内置资源,如`@android:drawable/ic_menu_back`,或者使用自定义的图片。 4. **事件监听**: 当用户点击返回按钮时,应用需要响应。这需要在Java代码中完成。首先,获取到标题栏布局和返回按钮的...

    自定义MENU的demo

    在Android开发中,自定义`MENU`是一种常见的需求,它能提供更为个性化的交互体验。本教程将深入探讨如何利用`PopupWindow`来实现一个自动显示的`MENU`,这通常用于在用户触发某一操作时,弹出一个包含多个选项的菜单...

    Android UI之样式Menu

    总之,通过自定义样式、动画和交互,Android的Menu可以变得非常生动有趣。理解并熟练掌握这些技术,能帮助开发者创建更加吸引人的用户界面,提升应用的整体质量。在实际开发中,不断尝试和创新,让菜单成为提升用户...

    自定义menu菜单

    本篇将深入探讨如何在Android中实现自定义Menu菜单。 首先,我们从Menu的基本概念开始。在Android中,Menu主要用于在特定时刻(如点击应用图标右上角的“...”或在活动中长按)显示一系列可选操作。菜单可以分为三...

    自定义Android菜单oc

    在Android开发中,自定义菜单背景能够为应用增添独特的风格,提升用户体验。默认情况下,Android系统的菜单背景通常是白色,但通过编程方式,我们可以轻松实现个性化菜单背景。以下是如何自定义Android菜单背景的...

    Android自定义Toolbar

    在Android开发中,`Toolbar`是Google推荐用来替代传统`ActionBar`的新组件,它提供了更大的灵活性和自定义性。这个例程将带你深入理解如何在Android应用中自定义`Toolbar`,并展示其实现过程。 首先,让我们了解`...

    Android 自定义菜单

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

    popwindow viewpager 自定义menu

    `PopupWindow`是Android中的一个强大组件,允许开发者创建弹出式窗口,其灵活性更高,可以自定义窗口的内容、大小和位置。在这个教程中,我们将探讨如何使用`PopupWindow`来模拟`ViewPager`中的自定义菜单。 首先,...

Global site tag (gtag.js) - Google Analytics