打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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;
   }
  });
 }
}

 
没有实现
,等待高手解决
07-21 11:16:05.964: WARN/KeyCharacterMap(1223): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
07-21 11:16:06.494: WARN/System.err(1223): android.view.InflateException: Binary XML file line #17: Error inflating class com.android.internal.view.menu.IconMenuItemView
07-21 11:16:06.588: WARN/System.err(1223):     at android.view.LayoutInflater.createView(LayoutInflater.java:518)
07-21 11:16:06.594: WARN/System.err(1223):     at cn.com.ingrasys.MenuBgReset$1.onCreateView(MenuBgReset.java:93)
07-21 11:16:06.615: WARN/System.err(1223):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
07-21 11:16:06.615: WARN/System.err(1223):     at android.view.LayoutInflater.inflate(LayoutInflater.java:386)
07-21 11:16:06.625: WARN/System.err(1223):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
07-21 11:16:06.635: WARN/System.err(1223):     at com.android.internal.view.menu.MenuItemImpl.createItemView(MenuItemImpl.java:592)
07-21 11:16:06.644: WARN/System.err(1223):     at com.android.internal.view.menu.MenuItemImpl.getItemView(MenuItemImpl.java:577)
07-21 11:16:06.655: WARN/System.err(1223):     at com.android.internal.view.menu.IconMenuView.updateChildren(IconMenuView.java:351)
07-21 11:16:06.655: WARN/System.err(1223):     at com.android.internal.view.menu.IconMenuView.initialize(IconMenuView.java:333)
07-21 11:16:06.655: WARN/System.err(1223):     at com.android.internal.view.menu.MenuBuilder$MenuType.getMenuView(MenuBuilder.java:199)
07-21 11:16:06.665: WARN/System.err(1223):     at com.android.internal.view.menu.MenuBuilder.getMenuView(MenuBuilder.java:323)
07-21 11:16:06.665: WARN/System.err(1223):     at com.android.internal.policy.impl.PhoneWindow.initializePanelContent(PhoneWindow.java:858)
07-21 11:16:06.715: WARN/System.err(1223):     at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:435)
07-21 11:16:06.729: WARN/System.err(1223):     at com.android.internal.policy.impl.PhoneWindow.onKeyUpPanel(PhoneWindow.java:621)
07-21 11:16:06.734: WARN/System.err(1223):     at com.android.internal.policy.impl.PhoneWindow.onKeyUp(PhoneWindow.java:1339)
07-21 11:16:06.734: WARN/System.err(1223):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1668)
07-21 11:16:06.734: WARN/System.err(1223):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2560)
07-21 11:16:06.734: WARN/System.err(1223):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2535)
07-21 11:16:06.734: WARN/System.err(1223):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1867)
07-21 11:16:06.734: WARN/System.err(1223):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-21 11:16:06.734: WARN/System.err(1223):     at android.os.Looper.loop(Looper.java:123)
07-21 11:16:06.734: WARN/System.err(1223):     at android.app.ActivityThread.main(ActivityThread.java:3647)
07-21 11:16:06.795: WARN/System.err(1223):     at java.lang.reflect.Method.invokeNative(Native Method)
07-21 11:16:06.835: WARN/System.err(1223):     at java.lang.reflect.Method.invoke(Method.java:507)
07-21 11:16:06.835: WARN/System.err(1223):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-21 11:16:06.855: WARN/System.err(1223):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-21 11:16:06.863: WARN/System.err(1223):     at dalvik.system.NativeStart.main(Native Method)
07-21 11:16:06.885: WARN/System.err(1223): Caused by: java.lang.reflect.InvocationTargetException
07-21 11:16:06.915: WARN/System.err(1223):     at java.lang.reflect.Constructor.constructNative(Native Method)
07-21 11:16:06.915: WARN/System.err(1223):     at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
07-21 11:16:06.925: WARN/System.err(1223):     at android.view.LayoutInflater.createView(LayoutInflater.java:505)
07-21 11:16:06.943: WARN/System.err(1223):     ... 26 more
07-21 11:16:06.955: WARN/System.err(1223): Caused by: java.lang.NullPointerException
07-21 11:16:07.001: WARN/System.err(1223):     at android.view.ViewConfiguration.get(ViewConfiguration.java:228)
07-21 11:16:07.009: WARN/System.err(1223):     at android.view.View.<init>(View.java:1878)
07-21 11:16:07.014: WARN/System.err(1223):     at android.view.View.<init>(View.java:1921)
07-21 11:16:07.024: WARN/System.err(1223):     at android.widget.TextView.<init>(TextView.java:344)
07-21 11:16:07.045: WARN/System.err(1223):     at android.widget.TextView.<init>(TextView.java:337)
07-21 11:16:07.064: WARN/System.err(1223):     at com.android.internal.view.menu.IconMenuItemView.<init>(IconMenuItemView.java:61)
07-21 11:16:07.077: WARN/System.err(1223):     at com.android.internal.view.menu.IconMenuItemView.<init>(IconMenuItemView.java:86)
07-21 11:16:07.094: WARN/System.err(1223):     ... 29 more
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【   】动态添加布局文件
遇到获取读手机号码等系统权限问题
获取LayoutInflater的三种方式分析
预知View是如何加载到界面的,且从源码一一道来
Android 打印堆栈的几种方法
Win7 64位上构建安卓软件开发环境
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服