android menu显示不出icon,android菜单Menu添加Icon无效问题(android4.0)

在Android 4.0系统中,菜单Menu的图标默认不显示,原因是MenuBuilder的mOptionalIconsVisible默认为false。通过反射调用MenuBuilder的setOptionalIconsVisible方法设置其为true,然后添加图标,可以解决菜单图标不显示的问题。在onCreateOptionsMenu方法中,使用反射调用并添加图标后,菜单项的图标就能正常显示了。
摘要由CSDN通过智能技术生成

在Android4.0系统中,创建菜单Menu,通过setIcon方法给菜单添加图标是无效的,图标没有显出来,2.3系统中是可以显示出来的。这个问题的根本原因在于4.0系统中,涉及到菜单的源码类 MenuBuilder做了改变,该类的部分源码如下:

public class MenuBuilder implements Menu {

...

private boolean mOptionalIconsVisible = false;

....

void setOptionalIconsVisible(boolean visible) {

mOptionalIconsVisible = visible;

}

boolean getOptionalIconsVisible() {

return mOptionalIconsVisible;

}

...

}

上面的代码中,mOptionalIconsVisible成员初始值默认为false,这就是为什么给菜单设置图标没有效果的原因;所以,只要我们在创建菜单时通过调用setOptionalIconsVisible方法设置mOptionalIconsVisible为true就可以了;这时候问题来了,要想调用该方法,就需要创建MenuBuilder对象,但是,我们是无法在开发的应用程序中创建MenuBuilder这个对象的(MenuBuilder为系统内部的框架类);

这时候就需要考虑用反射了,在代码运行创建菜单的时候通过反射调用setOptionalIconsVisible方法设置mOptionalI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值