今天在查找资料的时候看到篇博客,教你怎么自定义ProgressBar样式:
在res下创建drawable文件夹,新建文件drawable/progressbar_color.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 背景 gradient是渐变,corners定义的是圆角 -->
<item android:id="@android:id/background">
<shape> //注意是shape
<corners android:radius="10dp" />
<solid android:color="#ffffff" />
</shape>
</item>
<!-- 第二条进度条颜色 -->
<item android:id="@android:id/secondaryProgress">
<clip> //注意是从clip
<shape> //注意是从shape
<corners android:radius="10dip" />
<gradient
android:angle="90.0"
android:centerColor="#ac6079"
android:centerY="0.45"
android:endColor="#6c213a"
android:startColor="#e71a5e" />
</shape>
</clip>
</item>
<!-- 进度条 -->
<item android:id="@android:id/progress">
<clip> //注意是clip
<shape> //注意是shape
<corners android:radius="10dip" />
<solid android:color="#FF8080" />
</shape>
</clip>
</item>
</layer-list>
然后在布局中引用就可以了。
activity_main.xml
<ProgressBar
android:id="@+id/my_progress"
android:layout_width="match_parent"
android:layout_height="12dp"
android:max="100"
android:progress="40"
android:secondaryProgress="70"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@drawable/progressbar_color"/>
注:1、
secondaryProgress 和 progress 必须要使用 <clip></clip>元素
2、其他的一些常用属性:
Android:maxHeight="2dp"android:minHeight="2dp" 限定progressbar的高度
android:thumb="@drawable/big_hook_ok" 进度位置的图片
其实想知道为什么这里自定义drawable的时候要使用系统的id,
<item android:id="@android:id/background">
<item android:id="@android:id/secondaryProgress">
<item android:id="@android:id/progress">
只有从源码中找答案了!
通过styles里的progressDrawable配置
找到原因了,原来ProgressBar使用了系统的id属性,通过id属性设置了ProgressBar的样式。
看来以后如果自己做sdk开发,或者第三方控件的时候也可以这么处理了,不错get!