2015-07-28 78 views
5

我遇到了一个奇怪的效果,它处理带有支持lib属性的形状drawable。我有以下代码,每次在通货膨胀期间崩溃。Android支持库v4:22+在attr/drawables上崩溃前棒棒糖

<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的设备。我正在使用以下支持库:

compile 'com.android.support:support-v4:22.2.1' 

任何发现的原因这种情况发生的原因?这是支持库中的错误吗?

+0

我正面临同样的问题。你有没有找到解决办法? – ch3tanz

回答

2

<solid android:color="?attr/colorPrimary"/>指向Android代码中的私有颜色(未公开),也许它在某些API中不存在。
虽然<solid android:color="@color/primary"/>将指向项目中的颜色,也许你只能在文件夹中值-V21具有颜色名称primary所以它只能在版本低于5.0
崩溃我想你应该尝试使用此: <solid android:color="@android:attr/colorPrimary"/>以确保属性存在。
希望这会有所帮助。

+3

无论如何,如果我在布局XML文件中使用?attr/colorPrimary,它工作正常。问题是只有在内部定义可绘制的时候。当我将它作为依赖关系包含时,支持库中的属性将在整个项目中可见。我错了? – Michal

相关问题