首页 > 解决方案 > Android-水平渐变进度条显示完整进度

问题描述

带有可绘制进度的进度条未显示正确的进度。它显示了完整的进度,而不是设置的进度值。

进度条xml

 <ProgressBar
       style="@style/Widget.AppCompat.ProgressBar.Horizontal"
       android:layout_centerVertical="true"
       android:layout_toRightOf="@id/rewardScore"
       android:layout_width="match_parent"
       android:id="@+id/userProgress"
       android:max="100"
       android:background="@drawable/progress_white_bg"
       android:layout_marginLeft="10dp"
       android:layout_height="10dp"
       android:progress="40"
       android:progressDrawable="@drawable/gradient_progress"
    />

gradient_drawable.xml

<?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>

        <corners android:radius="100dp"/>
        <gradient
            android:startColor="@color/white"
            android:endColor=  "@color/white"
            />
        </shape>
     </item>

     <item android:id="@android:id/progress">
       <shape>
         <corners android:radius="100dp"/>

        <gradient
            android:startColor="@color/progress_gradient_one"
            android:endColor="@color/progress_gradient_two"
            />
       </shape>
    </item>
</layer-list>

标签: androidandroid-layoutandroid-studioprogress-bar

解决方案


问题在 gradient_progress drawable 中。在第二项的渐变标记中设置此属性:android:useLevel="true":

<?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>

        <corners android:radius="1dp" />
        <gradient
            android:endColor="#fff"
            android:startColor="#fff" />
    </shape>
</item>

<item android:id="@android:id/progress">
    <shape>
        <corners android:radius="1dp" />
        <gradient
            android:endColor="#6aae33"
            android:startColor="#e61313"
            android:useLevel="true" />
    </shape>
</item>


推荐阅读