这篇文章主要介绍了Android Studio用genymotion运行后小图标无法显示的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
提出问题
我做的是一个通讯录,用到了选项菜单,每一个菜单项左边我都添加了一个小图标,运行后发现没有显示出来。
解决方案
利用反射机制,根据对象来寻找类,再根据类来找方法,在显示菜单选项的Activity中复写onMenuOpened方法:
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if(menu!=null){
if(menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")){
try {
Method method=menu.getClass().getDeclaredMethod("setOptionalIconsVisible",Boolean.TYPE);
method.setAccessible(true);
method.invoke(menu,true);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}
我解释一下,因为设置图标显示这个方法是不可访问的(private),所以我们才会这么麻烦要用到反射机制来显现图标。
代码我也解释一下,我们用menu对象来反射MenuBuilder
这个类,看这个类有没有。得到这个类以后,再通过这个类得到它的方法,这个方法叫setOptionalIconsVisible
,这个是要自己打出来的,这个方法它是Boolean类型的。因为这个方法是私有的,所以我们要把不可访问设置为可访问的。最后我们调用method.invoke
设置true后将图标变为可见的。
修改之后
好了,到这里我们的图标就显示成功啦!
总结
到此这篇关于Android Studio用genymotion运行后小图标无法显示怎办的文章就介绍到这了,更多相关Android Studio genymotion 小图标无法显示内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Android Studio用genymotion运行后小图标无法显示问题
基础教程推荐
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- Flutter进阶之实现动画效果(三) 2022-10-28
- IOS获取系统相册中照片的示例代码 2023-01-03
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18
- Android开发Compose集成高德地图实例 2023-06-15
- Android实现短信验证码输入框 2023-04-29
- iOS开发 全机型适配解决方法 2023-01-14
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- iOS开发使用XML解析网络数据 2022-11-12