欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-13 14:19:22
复制代码 代码如下: public class menuex extends activity { private static final string tag = "a...

复制代码 代码如下:

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系统,这句可能根据各个厂商编译的固件来灵活处理。

上一篇:

下一篇: