项目中用到更改自定义AndroidMenu背景图片,背景色等,网上转载了一篇如下:本文转载自 池塘里的大象
更改背景颜色后效果如下:
具体代码如下:
public boolean onCreateOptionsMenu(Menu menu) {
//MenuInflater mMenuInf = getMenuInflater();
//mMenuInf.inflate(R.menu.main_menu, menu);
menu.add(0,R.id.main_menu_about,0,R.string.main_menu_about).setIcon(R.drawable.menu_icon_about);
menu.add(0,R.id.main_menu_exit,1,R.string.main_menu_exit).setIcon(R.drawable.menu_icon_exit);
SetMenubackgroudcolor();
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.main_menu_about:
break;
case R.id.main_menu_exit://退出系統
//取消通知
//notificationManager.cancel(R.drawable.logo_icon_16);
DialogUtil.Exitdialog(MyHomeActivity.this,notificationManager);
break;
}
return true;
}
更改颜色方法如下:
private void SetMenubackgroudcolor() {
getLayoutInflater().setFactory(new Factory() {
public View onCreateView(String name, Context context, AttributeSet attrs) {
if(name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")
|| name.equalsIgnoreCase("com.android.internal.view.menu.ListMenuItemView")){
try {
LayoutInflater f = getLayoutInflater();
final View view = f.createView( name, null, attrs );
new Handler().post( new Runnable() {
public void run () {
//view.setBackgroundResource( R.drawable.menu_backg);//设置背景图片
view.setBackgroundColor(Color.parseColor("#F6F9FE"));//设置背景色
}
});
} catch (InflateException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return null;
}
});
}
就这样。。。不过本人没有测试!觉得应该是可行的!