0

我用我的costumizing進度沒有找到繪製資源的繪製如下:採用Android 4.4.4

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@android:id/background"> 
     <shape> 
      <gradient 
       android:startColor="@android:color/transparent" 
       android:endColor="@android:color/transparent" /> 
     </shape> 
    </item> 
    <item android:id="@android:id/secondaryProgress"> 
     <clip> 
      <shape> 
       <gradient 
        android:startColor="@android:color/white" 
        android:endColor="@android:color/white" /> 
      </shape> 
     </clip> 
    </item> 
    <item android:id="@android:id/progress"> 
     <clip> 
      <shape> 
       <gradient 
        android:startColor="?attr/colorAccent" 
        android:endColor="?attr/colorAccent" /> 
      </shape> 
     </clip> 
    </item> 
</layer-list> 

在使用Android 6或7我的應用程序,它工作正常,但如果我嘗試它奇巧,拋出以下錯誤:

android.content.res.Resources $ NotFoundException:可繪製資源ID#0x7f020094中的文件res/drawable/quickcontrolsprogress.xml。如果您嘗試使用的資源是矢量資源,則可能是以不受支持的方式引用它。有關更多信息,請參閱AppCompatDelegate.setCompatVectorFromResourcesEnabled()。
at android.content.res.Resources.loadDrawable(Resources.java:3457)
at android.content.res.Resources.getDrawable(Resources.java:1897)
at android.support.v4.content.ContextCompat。 getDrawable(ContextCompat.java:374)
在android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:202)
在android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190)
在android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
at at.guger.musixs.fragment.ControlsFragment.onCreateView(ControlsFragment.java:86)
...
引起:java.lang.UnsupportedOperationException:無法轉換爲顏色:type = 0x2 at android.content.res.TypedArray.getColor(TypedArray.java:327) at android.graphics.drawable .GradientDrawable.inflate(GradientDrawable.java:871) 在android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:990)
...

的代碼,錯誤被指向的是:

prgqProgress = (ProgressBar) rootView.findViewById(R.id.fr_ctrl_prgqProgress); 
prgqProgress.setProgressDrawable(AppCompatResources.getDrawable(getContext(), R.drawable.quickcontrolsprogress)); -> Line 86 

有誰知道爲什麼會發生這個ResourceNotFound異常,以及如何解決它? 謝謝!

回答

0

它不是一個資源沒有發現問題,錯誤的是: UnsupportedOperationException:無法轉換爲彩色:在android.content.res.TypedArray.getColor(TypedArray.java:327)型= 0X2

對於API < 21,不能使用屬性在xml drawable中着色。所以唯一的方法是使用對顏色資源的引用(@color/YOURS_COLOR)或使用#RGB格式。

+0

好謝謝你,我已經害怕它是這樣的。 –

+0

是否有可能創建一個擴展ProgressBar的類,該類已經實現了這些屬性,我嘗試在XML中設置這些屬性?如果是,我該怎麼辦? –

+0

我認爲提供這些舊版本的ather xml將是一個更好的解決方案,我相信android有這個功能 –

0

如果您繪製對象有主題屬性

嘗試ContextCompat.getDrawable(getActivity(), R.drawable.quickcontrolsprogress);

如果您繪製對象沒有主題屬性

ResourcesCompat.getDrawable(getResources(), R.drawable.name, null); 

,而不是

AppCompatResources.getDrawable(getContext(), R.drawable.quickcontrolsprogress)