Android Studio用genymotion运行后小图标无法显示问题

作者:caipital 时间:2021-08-17 03:00:22 

提出问题

我做的是一个通讯录,用到了选项菜单,每一个菜单项左边我都添加了一个小图标,运行后发现没有显示出来。

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运行后小图标无法显示问题

好了,到这里我们的图标就显示成功啦!

来源:https://blog.csdn.net/caipital/article/details/105275142

标签:Android,Studio,genymotion
0
投稿

猜你喜欢

  • Android View与Compose互相调用实例探究

    2021-06-11 09:07:29
  • java编程abstract类和方法详解

    2023-12-15 06:08:46
  • 完美解决gson将Integer默认转换成Double的问题

    2022-06-06 00:53:36
  • Java实现角色扮演游戏的示例代码

    2023-03-31 19:41:45
  • 全面分析c# LINQ

    2023-10-25 16:35:16
  • Android列表实现(2)_游标列表案例讲解

    2022-11-15 16:49:55
  • 详解C#对XML、JSON等格式的解析

    2022-06-04 22:45:50
  • java使用正则表达校验手机号码示例(手机号码正则)

    2022-04-07 20:37:04
  • Java 确保某个Bean类被最后执行的几种实现方式

    2021-09-28 09:53:49
  • C# WinForm编程获取文件物理路径的方法

    2021-08-30 16:06:06
  • iOS新浪微博、腾讯微博分享功能实例

    2023-06-16 09:15:53
  • Android中使用ViewStub实现布局优化

    2023-11-28 21:16:18
  • 举例讲解JDK注解的使用和自定义注解的方法

    2022-06-29 17:34:52
  • 浅谈JavaWeb中的web.xml配置部署描述符文件

    2023-11-12 00:14:13
  • 解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题

    2021-08-06 20:52:42
  • MyBatis控制台显示SQL语句的方法实现

    2021-10-18 04:10:00
  • Android测试方法总结

    2022-07-27 08:02:41
  • Java分布式服务框架Dubbo介绍

    2022-09-16 01:27:53
  • springboot 排除redis的自动配置操作

    2023-01-20 04:25:47
  • C#实现IP摄像头的方法

    2023-12-09 03:42:51
  • asp之家 软件编程 m.aspxhome.com