2016-07-06 3 views
2

Я работаю над приложением, в котором используются разные индикаторы выполнения, и я хочу, чтобы они выглядели как те, что были в Google, с закругленными углами. Google fir bars У меня есть пользовательская вытяжка для каждого бара с различными цветами, и она округляет внешние углы, но не внутренние углы, как вы можете увидеть здесь: My bars Моего заказом вытяжка является:Android Material Design rounded 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, но это такая простая вещь, я думаю, что подмигнули не стоит. Я также смотрел на разные темы, но ничего не работало для меня. Любая идея, без необходимости работать с изображениями .9.png, если это возможно?

Большое спасибо!

+0

вы можете проверить это http://stackoverflow.com/a/21923928/3711562 и http://stackoverflow.com/a/5354554/3711562 –

+0

Да, я уже видел эту нить, но я предпочитаю не указывать .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

Смежные вопросы