在最近的项目中,遇到多个颜色progressBar,这就需要修改ProgressBar颜色了,虽然在API 21以后有android:progressTint可以修改,不过不兼容低版本。
网上查找到可以使用android:progressDrawable属性定义一个layer-list做为ProgressBar的drawable,照着网上的写了一个layer_progress_bg.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"
android:drawable="@color/grey_bg" />
<item android:id="@android:id/progress">
<shape>
<solid android:color="@color/progress" />
</shape>
</item>
</layer-list>
然后给progressBar设置
<ProgressBar
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:max="100"
android:progress="50"
android:progressDrawable="@drawable/layer_progress_bg" />
结果运行一看
image.png什么鬼,为什么我的progress 是50,进度条就充满了,在网上查了很久,终于找到了这片文章http://blog.csdn.net/u012528526/article/details/50186517
发现原来这个写法是错误的:
<item android:id="@android:id/progress">
<shape>
<solid android:color="@color/progress" />
</shape>
</item>
正确的写法应该是这样
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="@color/progress"/>
</shape>
</clip>
</item>
secondaryProgress和progress两个项目使用自定义drawable时要使用<scale/>或者</clip>子项,否则进度条会一直显示满的状态
其实问题出在,我没有对着网上的代码,一个个敲,漏掉了一个</clip>
网友评论