(伪优化)解决菜单(Menu)添加Icon无效问题/Android
来源:互联网 发布:mac文字游戏制作软件 编辑:程序博客网 时间:2024/06/05 14:29
在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为系统内部的框架类);
利用反射给出的解决方案,主Activity中复写如下:
@Override protected boolean onPrepareOptionsPanel(View view, Menu menu) { if (menu.getClass() == MenuBuilder.class) { try { Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); method.setAccessible(true); method.invoke(menu, true); } catch (Exception e) { e.printStackTrace(); } } return super.onPrepareOptionsPanel(view, menu); }
原博的解决方案太冗长了……
参考资料:
解决android4.0系统中菜单(Menu)添加Icon无效问题——stevenhu_223
阅读全文
0 0
- (伪优化)解决菜单(Menu)添加Icon无效问题/Android
- android菜单Menu添加Icon无效问题(android4.0)
- Android 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 解决android4.0系统中菜单(Menu)添加Icon无效问题
- 11. android 选项菜单(此处为icon menu)--Menu,SubMenu,MenuItem的用法
- 解决android4.4 中添加Menu的icon时,没有显示的问题
- Android动态添加menu菜单
- Android 中添加menu菜单
- Android菜单(Menu)
- android menu.addIntentOptions 添加动态菜单
- JQuery实现动态数据二级联动
- tf.nn has no attribute rnn_cell in version 1.0.1
- 错误:Value \'0000-00-00 00:00:00\' can not be represented as java.sql.Timestamp;的解决
- Mysql在delete时不支持别名?
- mapreduce 二次排序
- (伪优化)解决菜单(Menu)添加Icon无效问题/Android
- textarea没有value属性
- 根据单选按钮判断用户类型
- NNFS--Neural Network from Scratch
- mysql 连接url中useUnicode=true&characterEncoding=UTF-8 的作用
- 原生javascript 表单同步提交和提交前操作 和 document.form.submit() is not a function
- 使用数组的应用举例
- MyBatis一次执行多条SQL语句
- hdu2389-二分匹配HK算法