使用getDrawable时遇到的一个bug

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用getDrawable时遇到的一个bug相关的知识,希望对你有一定的参考价值。

做一个筛选菜单时候,用到了DropDownMenu,github地址:https://github.com/dongjunkun/DropDownMenu

遇到几个问题:

(1)最右面的上三角形、下三角形很难看,需要改成向上箭头向下箭头,而且靠近文件,在右边;

(2)背景颜色需要改成白色;

(3)下面的子菜单的文字在最左边,需要居中;

(4)第一次进来Fragment的时候DropDownMenu的下拉选项没有选中任意一项

上面几个需求看起来很容易改,不就是改改布局什么的,其实改过之后就知道不是这么容易滴,我是直接改他的库,改的乱七八糟才成功。篇幅有限,这里就不说了。

说一下遇到的一个bug:就是代码中为TextView添加图片的一个bug

java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable

技术分享

技术分享

 

          【解决办法】:

            ContextCompat.getDrawable(MainActivity.this.getApplicationContext(),R.drawable.ic_launcher);

          【原因】:

            Context类的getDrawable(res)/geColor(res)方法和Resources的getDrawable(res,theme)/getColor(res.theme)都是API21才添加的,

            低版本系统无法找到该方法所以报异常。

 

以上是关于使用getDrawable时遇到的一个bug的主要内容,如果未能解决你的问题,请参考以下文章

Android:context.getDrawable() 的替代方案

ResourcesCompat.getDrawable() 与 AppCompatResources.getDrawable()

Android中getDrawable和getColor过时的替代方法

警告: [deprecation] Resources中的getDrawable(int)已过时

警告: [deprecation] Resources中的getDrawable(int)已过时

警告: [deprecation] Resources中的getDrawable(int)已过时