关于Android4.4及以下版本,TextView中使用矢量图时报错的问题
2017-08-03 11:32
232 查看
问题描述:在新项目的“我的”模块部分,每个条目左边是图片,图片右边是文字,然后条目末端是个向右的箭头,这个很常见,我是使用一个TextView来时实现的,由于UI那边没有切好左边的图,所以我这边在AndroidStudio里面新建了一个矢量图来代替了。在android5.0及以上版本的机子上运行,没有任何异常,但是在android4.4及下版本时,只要进入“我的”页面就崩溃。
分析问题: 首先,先看一下我实现条目的效果图和代码:
代码实现:
当时在android5.0版本及以上的机子上运行好好的的,结果在android4.4的机子上进入到我的页面就崩溃,我和我的小伙伴们都吃了一惊。我赶快打开控制台查看log日志,其实并不想预想的那样,直接报告代码哪一行出错了,哈哈。我截取了一段重要的错误提示:
这种错误,如果你之前遇到过,基本上很好定位,一下子就知道是某个部分出错了。但是如果没有遇到过的话,就要用排除法去定位。
小插曲:就像我第一次在oppo机子上遇到类似情况的时候,没有报告代码哪一行出了错误,报告了一堆什么xxxOppoStaticLayout的错误提示。首先,我先删除剪切了java文件中的大部分代码,除了加载布局文件的部分。然后运行后,还是奔溃了,可以确定不是java文件代码的问题,是xml布局文件的错误。在xml文件中剪切一部分代码,然后测试,在剪切一部分测试,测试几个回合后定位到TextView中的android:ellipsize=”“属性导致的,所以对于这种类似的问题,你也可以采取这样的处理方法。
回到这个问题,看了提示,我基本已经知道它错在哪里。加载图片出的问题,这个布局中就TextView中使用到了图片,所以可以定位到TextView这里。接下来我在android4.3的机子上测试了一下,打印的log就更加明显了:
已经可以清晰的看到是布局xml第几行了。所以我删除了
这一行后运行后就不在报错了,这已经很明显了,删除了矢量图就好了,可以断定就是矢量图搞得鬼。接下来我把矢量图换成了位图就可以正常运行了。
解决方案: 把android:drawableLeft的图片修改成位图就可以了。总结, Android4.4及以下版本,TextView中不要使用矢量图。
文章写的不对或者不足的地方欢迎指正^_^
分析问题: 首先,先看一下我实现条目的效果图和代码:
代码实现:
<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中不要使用矢量图。
文章写的不对或者不足的地方欢迎指正^_^
相关文章推荐
- 关于Android4.4以下版本Webview执行LoadUrl加载js导致键盘隐藏的问题(富文本编辑器)
- iOS9以下版本使用WKWebView加载本地HTML文件不显示,处理时容易忽略的问题
- 关于为使用ArrayAdapter创建ListView时,使用TextView添加子项的问题
- 关于使用WKWebViewJavascriptBridge报错的问题
- 关于PullToRefreshLayout和PullToRefreshScrollView同时使用代码报错的问题
- 安卓开发之TextView使用lineSpacingExtra时由于手机系统在5.1.1以下版本最后一行也会有距离的处理
- 关于Android4.0及以下系统版本使用PopupWindow.dismiss()时内部的Drawable透明的问题
- Andriod ADT v22.6.2版本中在Mainactivity.java中使用fragment_main.xml中TextView控件对象的问题
- 关于为使用ArrayAdapter创建ListView时,使用TextView添加子项的问题
- 关于自定义View时,画图形和图片时抗锯齿的使用的问题
- 关于“打开项目**时发生问题,尝试退出并重新启动应用程序。如果问题仍然存在,则可能是由于正在使用不支持的项目版本,或者项目文件可能损坏”的问题的解决办法。
- 关于在listview中加textview的autolink的问题
- 关于AutoCompleteTextView 为什么必须输入两个字符才能出现补全提示的问题的解决办法
- 关于AutoCompleteTextView 为什么必须输入两个字符才能出现补全提示的问题的解决办法
- 关于android 设置TextView可点击出现覆盖的问题
- 关于自定义View时,画图形和图片时抗锯齿的使用的问题
- 关于QGraphicsView里使用QGraphicsScene背景图片平铺的问题
- 关于使用AutoCompleteTextView和CursorAdapter查询电话联系人并找出电话号码
- 关于自定义View时,画图形和图片时抗锯齿的使用的问题
- 关于在VS2008以下版本的MFC程序使用VS 2008 FeaturePack出现内存泄露的理解