2015-07-28 93 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