今天在查找資料的時候看到篇博客啦膜,教你怎么自定義ProgressBar樣式:
在res下創(chuàng)建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的時候要使用系統(tǒng)的id,
<item android:id="@android:id/background">
<item android:id="@android:id/secondaryProgress">
<item android:id="@android:id/progress">
只有從源碼中找答案了瞬女!
通過styles里的progressDrawable配置
找到原因了窍帝,原來ProgressBar使用了系統(tǒng)的id屬性,通過id屬性設置了ProgressBar的樣式诽偷。
看來以后如果自己做sdk開發(fā)坤学,或者第三方控件的時候也可以這么處理了,不錯get报慕!