zoukankan      html  css  js  c++  java
  • 11 菜单设置图片不显示的问题

    • 注意若设置图片不显示那么打破封装性修改源码
      • 案例
        • 代码
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:icon="@drawable/ic_launcher"
            android:orderInCategory="1"
            android:showAsAction="never"
            android:title="我设置图片,但没有显示">
            <menu>
                <item
                    android:icon="@drawable/ic_launcher"
                    android:orderInCategory="1"
                    android:showAsAction="never"
                    android:title="设置图片的子菜单1"/>
                <item
                    android:orderInCategory="2"
                    android:showAsAction="never"
                    android:title="沒有设置图片的子菜单2"/>
            </menu>
        </item>
    
    </menu>

    效果图
    设置图片但没有显示的根图
    设置了效果图的子按钮

    解决办法如下

    package com.fmy.menu1;
    
    import java.lang.reflect.Method;
    
    import com.fmy.menu1.R;
    
    import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.SubMenu;
    import android.view.View;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
        private TextView tv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tv = (TextView)findViewById(R.id.tv);
    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            getMenuInflater().inflate(R.menu.layout, menu);
    
            //设置开启图片有效
            setIconEnable(menu,true);
    
            return super.onCreateOptionsMenu(menu);
        }
    
    
        //enable为true时,菜单添加图标有效,enable为false时无效。4.0+系统默认无效  
        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);  
    
                //MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)  
                m.invoke(menu, enable);  
    
            } catch (Exception e)   
            {  
                e.printStackTrace();  
            }  
        }  
    
    }
    
  • 相关阅读:
    Eclipse
    svn 常用
    spidermonkey编译
    float format 显示
    点击6次修改服务器地址
    UITextField字数限制
    UINavigationController
    运行时runtime
    IOS 技术与面试
    Cocos2dx笔记
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152272.html
Copyright © 2011-2022 走看看