自定义Menu菜单背景

不多说,上图,见代码。
  1. package lab.sodino.menutest;   
  2. import android.content.Context;   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. import android.os.Handler;   
  6. import android.util.AttributeSet;   
  7. import android.view.InflateException;   
  8. import android.view.LayoutInflater;   
  9. import android.view.Menu;   
  10. import android.view.MenuInflater;   
  11. import android.view.MenuItem;   
  12. import android.view.View;   
  13. import android.widget.Toast;   
  14. /**  
  15. * @author Sodino E-mail:sodinoopen@hotmail.com  
  16. * @version Time:2011-1-26 下午04:42:04  
  17. */  
  18. public class MenuAct extends Activity {   
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState) {   
  21.         super.onCreate(savedInstanceState);   
  22.         setContentView(R.layout.main);   
  23.     }   
  24.     public boolean onCreateOptionsMenu(Menu menu) {   
  25.         super.onCreateOptionsMenu(menu);   
  26.         MenuInflater inflater = new MenuInflater(getApplicationContext());   
  27.         inflater.inflate(R.menu.menu, menu);   
  28.         setMenuBackground();   
  29.         return true;   
  30.     }   
  31.     public boolean onOptionsItemSelected(MenuItem item) {   
  32.         String info = "";   
  33.         switch (item.getItemId()) {   
  34.         case R.id.menu_add:   
  35.             info = "Add";   
  36.             break;   
  37.         case R.id.menu_delete:   
  38.             info = "Delete";   
  39.             break;   
  40.         case R.id.menu_home:   
  41.             info = "Home";   
  42.             break;   
  43.         case R.id.menu_help:   
  44.             info = "Help";   
  45.             break;   
  46.         default:   
  47.             info = "NULL";   
  48.             break;   
  49.         }   
  50.         Toast toast = Toast.makeText(this, info, Toast.LENGTH_SHORT);   
  51.         toast.show();   
  52.         return super.onOptionsItemSelected(item);   
  53.     }   
  54.     // 关键代码为重写Layout.Factory.onCreateView()方法自定义布局   
  55.     protected void setMenuBackground() {   
  56.         MenuAct.this.getLayoutInflater().setFactory(new android.view.LayoutInflater.Factory() {   
  57.             /**  
  58.              * name - Tag name to be inflated.<br/>  
  59.              * context - The context the view is being created in.<br/>  
  60.              * attrs - Inflation attributes as specified in XML file.<br/>  
  61.              */  
  62.             public View onCreateView(String name, Context context, AttributeSet attrs) {   
  63.                 // 指定自定义inflate的对象   
  64.                 if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {   
  65.                     try {   
  66.                         LayoutInflater f = getLayoutInflater();   
  67.                         final View view = f.createView(name, null, attrs);   
  68.                         new Handler().post(new Runnable() {   
  69.                             public void run() {   
  70.                                 // 设置背景图片   
  71.                                 view.setBackgroundResource(R.drawable.menu_background);   
  72.                             }   
  73.                         });   
  74.                         return view;   
  75.                     } catch (InflateException e) {   
  76.                         e.printStackTrace();   
  77.                     } catch (ClassNotFoundException e) {   
  78.                         e.printStackTrace();   
  79.                     }   
  80.                 }   
  81.                 return null;   
  82.             }   
  83.         });   
  84.     }   
复制代码
/res/menu/menu.xml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:id="@+id/menu_add" android:title="Add" android:icon="@drawable/menu_add"></item>  
  4.     <item android:id="@+id/menu_delete" android:title="Delete" android:icon="@drawable/menu_delete"></item>  
  5.     <item android:id="@+id/menu_home" android:title="Home" android:icon="@drawable/menu_home"></item>  
  6.     <item android:id="@+id/menu_help" android:title="Help" android:icon="@drawable/menu_help"></item>  
  7. </menu>  
复制代码
转来的,记录一下!

本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/sodino/archive/2011/01/26/6165132.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值