ActionBar(12)用反射法-让溢出菜单里的item显示图标
来源:互联网 发布:象棋软件官网 编辑:程序博客网 时间:2024/05/29 04:54
通常,在溢出菜单中的显示是只有文字,如下图:
现在我们想要显示为下图中的样式,既有图标又有文字:
1.首先我们来看一下android源码,MenuBuilder.java
是否显示这个值是由MenuBuilder的变量值mOptionalIconsVisible决定的。该值默认是false的。
- <pre class="java" name="code">
- private boolean mOptionalIconsVisible = false;
- void setOptionalIconsVisible(boolean visible) {
- mOptionalIconsVisible = visible;
- }
- boolean getOptionalIconsVisible() {
- return mOptionalIconsVisible;
- }
2.由于MenuBuilder.java是系统的内部框架类,我们需要通过反射的方法将该值mOptionalIconsVisible 设为true,即显示出icon图片。
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- MenuInflater mMenuInflater = new MenuInflater(this);
- mMenuInflater.inflate(R.menu.simrecord_menu, menu);
- setIconVisable(menu,true);
- return true;
- }
- public void setIconVisible(Menu menu, boolean visable){
- Field field;
- try {
- field = menu.getClass().getDeclaredField("mOptionalIconsVisible");
- Log.d(TAG," setIconVisible1() field="+field);
- field.setAccessible(true);
- field.set(menu, visable);
- } catch (NoSuchFieldException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
在反射中,getDeclaredField()获取MenuBuilder.java中的属性值mOptionalIconsVisible。
通过field.set(menu, visable);设置该值为true。
0 0
- ActionBar(12)用反射法-让溢出菜单里的item显示图标
- actionbar溢出菜单显示图标的问题
- actionbar -- 溢出菜单中既显示图标又显示文字
- 终于暂时解决了actionbar溢出菜单显示图标的问题
- android的actionbar的溢出菜单默认不显示图标icon,怎样弄成微信那样可以显示icon
- ActionBar溢出菜单的icon不显示的解决方法
- Actionbar 中解决溢出菜单不显示的问题
- Actionbar 中解决溢出菜单不显示的问题
- 解决 Actionbar 溢出菜单不显示的问题
- Actionbar 中解决溢出菜单不显示的问题
- Actionbar 中解决溢出菜单不显示的问题
- Actionbar 解决溢出菜单不显示的问题
- 修改Android actionbar 溢出菜单按钮(OverflowButton)默认图标
- 关于actionbar overflow menu(溢出菜单)不显示的解决办法
- 解决ActionBar中的item不显示在ActionBar的问题
- 解决ActionBar中的item不显示在ActionBar的问题
- 解决ActionBar中的item不显示在ActionBar的问题
- 解决ActionBar中的item不显示在ActionBar的问题
- 在UITableView上面加手势导致didSelectRowAtIndexPath无法回调的问题
- 一种简洁的流式推送文件分享法
- 并行开发其实很容易
- Java中守护线程的总结
- 第9周项目1复数类的运算符重载续(2)
- ActionBar(12)用反射法-让溢出菜单里的item显示图标
- 码农心酸无奈聊以自嘲的59箴言
- java中HashMap的用法
- 第十一周上机实践项目1——存储班长信息的学生类
- 【mclin】手把手叫你在Eclipse里添加Android开发功能(附:完整离线版Android_SDK和Android_ADT下载)
- ios 集成支付宝SDK时错误的解决办法
- javascript(六)HTML DOM
- 取消框架 取消并行或任务的超长时间执行 CancellationToken
- 【二维完全背包】FATE