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)