2016-07-06 36 views
2

我正在開發一款應用程序,這款應用程序使用不同的進度條,我希望它們看起來像谷歌適合的,帶圓角的應用程序。 Google fir bars 我有不同顏色的各條自定義繪製,並取外角而非內角,你可以在這裏看到: My bars 我的自定義繪製的是:Android Material Design四捨五入progress_bar

<?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="@dimen/progress_bar_rounded" /> 
      <solid android:color="@color/progressbarBackground" /> 
     </shape> 
    </item> 

    <item android:id="@android:id/progress"> 
     <clip> 
      <shape> 
       <corners android:radius="@dimen/progress_bar_rounded" /> 
       <solid android:color="@color/progressbarGreen" /> 
      </shape> 
     </clip> 
    </item> 
</layer-list> 

的的進度條的代碼是:

<ProgressBar 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="@dimen/progress_bar_high" 
    android:id="@+id/GreenProgressBar" 
    android:indeterminate="false" 
    android:layout_marginLeft="15dp" 
    android:layout_gravity="center_vertical" 
    android:progressDrawable="@drawable/custom_green_progressbar" /> 

我可以使用一些圖書館爲https://github.com/akexorcist/Android-RoundCornerProgressBar,但由於它是這樣一個簡單的事情,我認爲it's不值得。 我也一直在尋找不同的線索,但沒有爲我工作。 任何想法,如果可能,無需使用.9.png圖像?

非常感謝!

+0

你可以檢查這個http://stackoverflow.com/a/21923928/3711562和http://stackoverflow.com/a/5354554/3711562 –

+0

是的,我已經看過這個帖子,但是我不喜歡u9.9.png,因爲顏色可能會改變,我不理解第二篇文章。 – Javierd98

+0

@ Javierd98你可以使用'progressTint'來改變顏色 – tachyonflux

回答

3

使用scale標籤,而不是clip

<?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="@dimen/progress_bar_rounded" /> 
      <solid android:color="@color/progressbarBackground" /> 
     </shape> 
    </item> 

    <item android:id="@android:id/progress"> 
     <scale android:scaleWidth="100%" android:useIntrinsicSizeAsMinimum="true"> 
      <shape> 
       <corners android:radius="@dimen/progress_bar_rounded" /> 
       <solid android:color="@color/progressbarGreen" /> 
       <size android:width="@dimen/progress_bar_rounded"/> 
      </shape> 
     </scale> 
    </item> 
</layer-list> 
+0

謝謝!這固定了主要問題,現在問題是當進度很小時,進度條不適合背景並且看起來很醜。我怎麼能解決它? http://i.imgur.com/vnak3Av.png – Javierd98

+0

一種可能的解決方法是給形狀一個寬度並使用'useIntrinsicSizeAsMinimum',這樣它就不會縮小到那個比例以下 – tachyonflux

+0

我已經嘗試添加'android:useIntrinsicSizeAsMinimum =「true 「大規模,但問題仍然存在 – Javierd98