我遇到了一个奇怪的效果,它处理了具有支持lib属性的shape drawable。我有以下代码,在通货膨胀期间每次都会崩溃。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size android:width="26dp" android:height="26dp"/>
<solid android:color="?attr/colorPrimary"/>
注意我使用了?attr / colorPrimary作为颜色。如果我使用
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size android:width="26dp" android:height="26dp"/>
<solid android:color="@color/primary"/>
没有任何崩溃,工作正常。问题仅出在运行Android版本低于5.0的设备上。我正在使用以下支持lib
compile 'com.android.support:support-v4:22.2.1'
有人发现了这种情况发生的原因吗?这是支持库中的错误吗?
答案 0 :(得分:2)
<solid android:color="?attr/colorPrimary"/>
在Android代码中指向私有颜色(不公开),也许它在某些API中不存在。
虽然<solid android:color="@color/primary"/>
将指向项目中的颜色,但您可能只在文件夹值-v21中使用颜色名称primary
,因此它只会在5.0以下的版本中崩溃
我想你应该尝试使用这个:
<solid android:color="@android:attr/colorPrimary"/>
以确保该属性存在
希望这会有所帮助。