android - 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>
解决方案
问题在 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>
推荐阅读
- javascript - JavaScript - 循环函数
- outlook - Outlook 预选发件人
- ruby-on-rails - Rails 使用来自不同 activerecord 模型的列作为外键
- java - lambda 表达式处的 NULLPOINTER
- triggers - 如果联系人 (PA) 的先前所有者不是同一用户,则在更改帐户所有者时 Salesforce 触发联系人 (PA) 所有者更改失败
- mysql - 带有 REPLACE() 的 IN() 不能按预期工作
- java - OSGI 架构和 Maven 多模块项目有什么区别?
- java - 如何检索 org.apache.axis.message.MessageElement
- sql - 基于另一个字段的案例陈述结果
- python - 寻找一个正则表达式来匹配以下