ProgressBar 自定義的時(shí)候可能會(huì)遇到一個(gè)問題泵督,希望進(jìn)度條中的進(jìn)度的兩端都是圓角的(或者進(jìn)度的末端是圓角的);
如下圖:
但是根據(jù)自定義的shape 或者是 layer-list卻總是很難做到扇调,幾乎都是被clip成了直角的樣子;
;
問題的原因就是如下鏈接中也會(huì)有相似的解答:
Android開發(fā)中Progress需要兩邊都是圓角怎么辦?
為什么是直角的茫打?原因就是被clip給切了待秃,所以我們不能夠用clip拜秧,而要使用scale這個(gè)標(biāo)簽。而上面鏈接給出的解答是定義一個(gè).9的圖片就能滿足要求章郁,由于我們這里是純色的一個(gè)進(jìn)度枉氮,所以沒有必要通過再制作一個(gè).9的圖片,而只需要通過同樣的方法引用我們定義的一個(gè)shape就可以了暖庄;
見代碼:
<ProgressBar
android:layout_below="@id/text_1"
android:layout_marginTop="16dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progressbar_1"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
android:progress="40"
android:progressDrawable="@drawable/progress_bar_drawable" />
progressDrawable 引用的progress_bar_drawable:
<?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:topRightRadius="20dp"
android:bottomRightRadius="20dp" />
<solid android:color="#ED30353E"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<scale android:scaleWidth="100%">
<shape>
<corners android:topRightRadius="20dp"
android:bottomRightRadius="20dp"/>
<solid android:color="#11ce33"/>
</shape>
</scale>
</item>
<item android:id="@android:id/progress">
<!--
<clip>
<shape>
<corners android:topRightRadius="20dp"
android:bottomRightRadius="20dp"/>
<solid android:color="#FF009898"/>
</shape>
</clip>
-->
<scale android:scaleWidth="100%"
android:drawable="@drawable/progress_bar_ct" />
</item>
</layer-list>
重點(diǎn)就是這個(gè):
<scale android:scaleWidth="100%"
android:drawable="@drawable/progress_bar_ct" />
指定了一個(gè)我們自定義的shape:progress_bar_ct.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- solid指定形狀的填充色聊替,只有android:color一個(gè)屬性 -->
<solid android:color="#FF009898" />
<!-- padding設(shè)置內(nèi)容區(qū)域離邊界的間距 -->
<!-- corners設(shè)置圓角,只適用于rectangle -->
<corners android:bottomRightRadius="20dp"
android:topRightRadius="20dp"/>
</shape>
這樣就不需要自定義.9的圖片了培廓;
PS:由于本人的需求是右端才是圓角惹悄,如果需要4個(gè)角都是圓角只需要修改一點(diǎn)代碼即可;
<corners android:bottomRightRadius="20dp"
android:topRightRadius="20dp"/> ```
修改成:
<corners android:radius="20dp" />
即可肩钠;