2016-07-06 30 views
2

Ich arbeite an einer App, die verschiedene Fortschrittsbalken verwendet, und ich möchte, dass sie wie die in Google passen, mit abgerundeten Ecken. Google fir bars Ich habe eine benutzerdefinierte ziehbar für jede Bar mit verschiedenen Farben und es rundet die äußeren Ecken, aber nicht die Innenecken, wie Sie hier sehen können: My bars Meine benutzerdefinierte ziehbar ist:Android Material Design abgerundet 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> 

An der Fortschrittsbalken-Code ist:

<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" /> 

ich einige Bibliotheken als https://github.com/akexorcist/Android-RoundCornerProgressBar verwenden könnte, aber so wie es ist so eine einfache Sache, die ich denke, es ist es nicht wert. Ich habe auch nach anderen Themen gesucht, aber nichts hat für mich funktioniert. Irgendeine Idee, ohne mit .9.png Bildern arbeiten zu müssen, wenn möglich?

Vielen Dank!

+0

Sie könnte dies überprüfen http://stackoverflow.com/a/21923928/3711562 und http://stackoverflow.com/a/5354554/3711562 –

+0

Ja, ich hatte diesen Thread schon gesehen, aber ich bevorzuge es nicht, .9.png zu verderben, weil sich die Farbe ändern könnte, und ich verstehe den zweiten Beitrag nicht. – Javierd98

+0

@ Javierd98 Sie könnten 'progressTint' verwenden, um die Farbe zu ändern – tachyonflux

Antwort

3

Verwenden Sie das scale-Tag statt 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

Danke !! Dies behebt das Hauptproblem, jetzt ist das Problem, dass wenn der Fortschritt klein ist, der Fortschrittsbalken nicht in den Hintergrund passt und hässlich aussieht. Wie könnte ich es reparieren? http://i.imgur.com/vnak3Av.png – Javierd98

+0

eine mögliche Lösung ist es, der Form eine Breite zu geben und 'useIntrinsicSizeAsMinimum' zu verwenden, so dass sie nicht darunter skaliert. – tachyonflux

+0

Ich habe versucht,' android: useIntrinsicSizeAsMinimum = "true hinzuzufügen "auf der Skala, aber das Problem ist immer noch da – Javierd98