关于Android4.4及以下版本,TextView中使用矢量图时报错的问题

问题描述:在新项目的“我的”模块部分,每个条目左边是图片,图片右边是文字,然后条目末端是个向右的箭头,这个很常见,我是使用一个TextView来时实现的,由于UI那边没有切好左边的图,所以我这边在AndroidStudio里面新建了一个矢量图来代替了。在android5.0及以上版本的机子上运行,没有任何异常,但是在android4.4及下版本时,只要进入“我的”页面就崩溃。

分析问题: 首先,先看一下我实现条目的效果图和代码:
这里写图片描述
代码实现:

<TextView
      android:id="@+id/tv_mine_publish"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:background="@color/white"
      android:drawableLeft="@drawable/ic_dashboard_black_24dp"
      android:drawableRight="@drawable/mine_go"
      android:drawablePadding="10dp"
      android:gravity="center_vertical"
      android:padding="10dp"
      android:text="装修图片"
      android:textColor="@color/mine_itme_textcolor"
      android:textSize="@dimen/mine_item_size" />

当时在android5.0版本及以上的机子上运行好好的的,结果在android4.4的机子上进入到我的页面就崩溃,我和我的小伙伴们都吃了一惊。我赶快打开控制台查看log日志,其实并不想预想的那样,直接报告代码哪一行出错了,哈哈。我截取了一段重要的错误提示:
这里写图片描述
这种错误,如果你之前遇到过,基本上很好定位,一下子就知道是某个部分出错了。但是如果没有遇到过的话,就要用排除法去定位。
小插曲:就像我第一次在oppo机子上遇到类似情况的时候,没有报告代码哪一行出了错误,报告了一堆什么xxxOppoStaticLayout的错误提示。首先,我先删除剪切了java文件中的大部分代码,除了加载布局文件的部分。然后运行后,还是奔溃了,可以确定不是java文件代码的问题,是xml布局文件的错误。在xml文件中剪切一部分代码,然后测试,在剪切一部分测试,测试几个回合后定位到TextView中的android:ellipsize=”“属性导致的,所以对于这种类似的问题,你也可以采取这样的处理方法。
回到这个问题,看了提示,我基本已经知道它错在哪里。加载图片出的问题,这个布局中就TextView中使用到了图片,所以可以定位到TextView这里。接下来我在android4.3的机子上测试了一下,打印的log就更加明显了:
这里写图片描述
已经可以清晰的看到是布局xml第几行了。所以我删除了

android:drawableLeft="@drawable/ic_dashboard_black_24dp"

这一行后运行后就不在报错了,这已经很明显了,删除了矢量图就好了,可以断定就是矢量图搞得鬼。接下来我把矢量图换成了位图就可以正常运行了。

解决方案: 把android:drawableLeft的图片修改成位图就可以了。总结, Android4.4及以下版本,TextView中不要使用矢量图。

文章写的不对或者不足的地方欢迎指正^_^

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值