复制代码 代码如下:
public class MenuEx extends Activity {
private static final String TAG = "android123";
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = new MenuInflater(getApplicationContext());
inflater.inflate(R.menu.options_menu, menu);
setMenuBackground();
return true;
}

关键代码就是重写Layout类的工厂方法onCreateView,这里对比绘制的View来替换系统中的
复制代码 代码如下:
protected void setMenuBackground(){
Log.d(TAG, "开始设置菜单的的背景");
getLayoutInflater().setFactory( new Factory() {
@Override public View onCreateView ( String name, Context context, AttributeSet attrs ) {
if ( name.equalsIgnoreCase( "com.android.internal.view.menu.IconMenuItemView" ) ) {
//上面这句Android123提醒大家不能有改动,目前来看对于原生android目前这个packageName还没有变化
try {
LayoutInflater f = getLayoutInflater();
final View view = f.createView( name, null, attrs ); //尝试创建我们自己布局
new Handler().post( new Runnable() {
public void run () {
view.setBackgroundResource( R.drawable.cwj"_bg); //设置背景为我们自定义的图片,替换cwj_bg文件即可 } } );
return view;
} catch (
InflateException e ) {}
catch (
ClassNotFoundException e ) {}
}
return null;
} }); }}

上面的例子可以轻松的替换当前Activity的Menu背景颜色,这里Android开发网再次提醒大家上面加粗的包名不能随意改动,如果非原生的Android系统,这句可能根据各个厂商编译的固件来灵活处理。

更多相关文章

  1. Android读取XML文件(SAX)
  2. [Android]动态替换Fragment全屏的问题
  3. Android(安卓)之 ProgressBar用法介绍
  4. android屏蔽Home键
  5. 2013.09.22——— android GridView行背景
  6. android中隐藏以及显示软键盘代码
  7. android机顶盒获取有线mac
  8. android 设置progressbar的背景颜色
  9. Android(安卓)开发常用代码片段

随机推荐

  1. MTK Android(安卓)6.0 上新增KeyCode
  2. Android(安卓)倒车影像车道线,3D效果
  3. android 使用Activity类布局时怎样让图片
  4. Android系统开发—对View的clipChildren,
  5. 替换Android自带apk
  6. 新手学Android
  7. Android(安卓)SDK Manager 更新方法
  8. android电源管理简要
  9. Android(安卓)Studio 1.0 官网下载链接
  10. Android(安卓)4.0 横竖屏切换注意事项