在Android开发过程中发现一个bug,直接看代码:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <size android:width="0dp" android:height="@dimen/dimen_20"/> </shape>
定义一个这样的shape作为LinearLayout的divider使用,在4.4以上的设备上使用都没有问题,但是一旦在4.4设备上跑的时候就直接crash了,crash信息如下:
java.lang.NullPointerException
at android.view.GLES20Canvas.setupModifiers(GLES20Canvas.java:1439)
at android.view.GLES20Canvas.drawLines(GLES20Canvas.java:1019)
at android.view.GLES20Canvas.drawLine(GLES20Canvas.java:1009)
at android.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:538)
查阅相关资料,发现这是Android 4.4的一个bug,进行如下修改可解决:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<size
android:width="0dp"
android:height="@dimen/dimen_20"/>
<stroke android:color="@android:color/transparent"/>
</shape>
是的,这里一定要加上<stroke>标签,加<solid>标签也不行,这里记录一下!