改变Android中menu菜单的背景色http://blog.sina.com.cn/s/blog_778ad6130100vzwv.htmlprotected void setMenuBackGround() {
getLayoutInflater().setFactory(
new android.view.LayoutInflater.Factory() { @Override
public View onCreateView(String name, Context context,
AttributeSet attrs) {
// TODO Auto-generated method stub
// 指定自定义inflater的对象
if (name
.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
try {
LayoutInflater inflater = getLayoutInflater();
final View view = inflater.createView(name,
null, attrs);
new Handler().post(new Runnable() {
public void run() {
view
.setBackgroundResource(R.drawable.application_background_static);
}
});
return view;
} catch (InflateException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return null;
}
});
}
getLayoutInflater().setFactory(
new android.view.LayoutInflater.Factory() { @Override
public View onCreateView(String name, Context context,
AttributeSet attrs) {
// TODO Auto-generated method stub
// 指定自定义inflater的对象
if (name
.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
try {
LayoutInflater inflater = getLayoutInflater();
final View view = inflater.createView(name,
null, attrs);
new Handler().post(new Runnable() {
public void run() {
view
.setBackgroundResource(R.drawable.application_background_static);
}
});
return view;
} catch (InflateException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return null;
}
});
}
解决方案 »
- Android 项目 本人想做个记录旅程,希望是以时间轴的方式,不知有没有源码
- httpCliet与httpURLConnection 主要区别及使用场合
- 如何在Android项目中使用FFMPEG
- java和c++怎么通信?
- android C++ 父类转子类问题?
- 将Activity打包成jar包后无法正常调用,求助!
- cocos2dx3.0 成功打包程apk后不能正常运行
- andriod 出错了
- 请问关于布局的问题
- 多界面调用统一导航菜单栏问题……求大神帮忙
- android 2.3 彻底删除锁屏界面出现问题
- TextView myTextView=(TextView)findViewById(R.id.myTextView);报错
http://www.haogongju.net/art/1317915
http://blog.csdn.net/pengruikeji/article/details/6432807
http://www.cnblogs.com/salam/archive/2011/04/04/2005329.html
http://www.oschina.net/question/167165_24912getLayoutInflater().setFactory(new Factory() { 02 @Override 03 public View onCreateView(String name, Context context, 04 AttributeSet attrs) { 05 // TODO Auto-generated method stub 06 if (name.equals("com.android.internal.view.menu.IconMenuItemView")) { 07 LayoutInflater f = getLayoutInflater(); 08 try { 09 final View view = f.createView(name, null, attrs); // 尝试创建我们自己布局 10 new Handler().post(new Runnable() { 11 @Override 12 public void run() { 13 view.setBackgroundResource(R.drawable.pressed); // 设置背景为我们自定义的图片 14 } 15 } ); 16 return view; 17 18 } catch (InflateException e) { 19 e.printStackTrace(); 20 } catch (ClassNotFoundException e) { 21 e.printStackTrace(); 22 } 23 } 24 return null; 25 } 26 });
该方法在2.3 上已经没有效果了, 求2.3 版本后如和修改 menu item 按下时候的背景颜色。
我用这个压根就编译不过去!!!the method onCreateView( ) must override a superclass method.
我用这个压根就编译不过去!!!the method onCreateView( ) must override a superclass method.
Android 在eclipse import 项目时经常有这个问题,关于@override 标示的错误,好多说法是“在没有进行设置的情况下,eclipse默认使用java 1.5来编译代码,所以经常会出现这个问题。解决办法:选择Window –> Preferences –> Java –> Compiler(mac上是Eclipse –> Preferences –> Java –> Compiler),确认选择的是1.6版本的编译器”可是我打开一看,居然是1.7的,这应该比1.6高级啊,还有错,郁闷了,只能去掉@override的标示,不管他了~
http://hi.baidu.com/9126nono/blog/item/07dff61867e39f4243a9adde.html
http://bbs.waapk.com/thread-4084-1-1.html
原帖来自ligux~~~~傻子啊傻子
如上次教程一样,准备工作是java环境以及反编译工具,还有你从自己ROM里提取出来的framework-res.apk。反编译之后定位到value/styles.xml
1、查找IconMenu,找到下面的代码:
</style>
<style name="TextAppearance.Widget.IconMenu.Item" parent="@style/TextAppearance.Small">
<item name="textColor">?textColorPrimaryInverse</item>
</style>
可以看到他的color定义,为textColorPrimaryInverse,于是我们继续查找这个textColorPrimaryInverse,在页首发现,他的颜色定义到了
<item name="textColorPrimaryInverse">@color/primary_text_light</item>
就是res/color目录下primary_text_light.xml,找到,打开一看,果然是你现在一直想改掉的X色。2、开始修改,这里有一个最简单的方法,如下所示
</style>
<style name="TextAppearance.Widget.IconMenu.Item" parent="@style/TextAppearance.Small">
<item name="textColor">?textColorPrimaryInverse</item>
</style>
直接将?textColorPrimaryInverse这一串修改为你想要的颜色,当然这里不能直接用RGB颜色代码了,你可以去color里寻找一个你中意的颜色,实在没有可以自己新建,然后在这里调用。
</style>
<style name="TextAppearance.Widget.IconMenu.Item" parent="@style/TextAppearance.Small">
<item name="textColor">@color/primary_text_lighte</item>
</style>
3、关于ExpandedMenu,看这字面意思就是扩展菜单,简单点儿说就是当你在MENU菜单里点更多的时候弹出的二级菜单。所以,这里一样需要修改。
同样在styles.xml,查找ExpandedMenu,定位到
<style name="Theme.ExpandedMenu" parent="@style/Theme">
<item name="listViewStyle">@style/Widget.ListView.Menu</item>
<item name="windowAnimationStyle">@style/Animation.OptionsPanel</item>
<item name="background">@null</item>
<item name="itemTextAppearance">?textAppearanceLargeInverse</item>
</style>
在这里,加入一行比如<item name="textColor">@color/primary_text_lighte</item>覆盖父级定义,来定义二级菜单的字体颜色。原理同上。4、最后,编译回去,替换进手机,重启,完成。
对应的图片应该是----/frameworks/base/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png