注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

网易考拉推荐

Android4.0中菜单menu中android:icon不起作用,setIcon()设置图标不显示  

2015-03-03 10:57:37|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    在Android 4.0中MenuBuilder做了修改

    源码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class MenuBuilder implements Menu {  
    ...  
    private boolean mOptionalIconsVisible = false;  
    ....  
        void setOptionalIconsVisible(boolean visible) {  
            mOptionalIconsVisible = visible;  
        }  
       
        boolean getOptionalIconsVisible() {  
            return mOptionalIconsVisible;  
        }  
    ...  
    }

    默认的

    1
    mOptionalIconsVisible=false

    是不可见的。所以你设置的图标是正确的可是不显示,那么你就需要通过反射来修改一个参数了

    具体操作看代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class MainActivity extends Activity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
     
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
     
            setIconEnable(menu,true);
            getMenuInflater().inflate(R.menu.main, menu);
             
            return true;
        }
        private void setIconEnable(Menu menu, boolean enable)  
        {  
            try   
            {  
                Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");  
                Method m = clazz.getDeclaredMethod("setOptionalIconsVisible"boolean.class);  
                m.setAccessible(true);  
                //下面传入参数
                m.invoke(menu, enable);  
                   
            catch (Exception e)   
            {  
                e.printStackTrace();  
            }  
        }  
     
    }


     m.setAccessible(true);//修改访问修饰符,让方法可以被访问.

    来源 :http://www.osblog.net/code/442.html

  评论这张
 
阅读(2632)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017