Как применить границу RatingBar без использования изображения?

Я хотел создать RatingBar, который не использует изображение для рамки. Но я не могу понять это правильно.

Вот как я хотел, чтобы это выглядело:

с рамкой

Вот что у меня получилось (заполнено - наполовину пусто - пусто):

заполнено - полупусто - пусто

Вот мой макет:

<RatingBar
    android:id="@+id/ratingbar_rate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:numStars="5"
    android:rating="2.5"
    android:stepSize="0.5"
    android:scaleX="3.5"
    android:scaleY="3.5"
    style="?android:attr/ratingBarStyleIndicator"
    android:isIndicator="false"
    android:progressTint="@color/star"
    android:progressBackgroundTint="@color/star_border"
    android:secondaryProgressTint="@color/star_partially_empty"
    android:backgroundTint="@color/star_partially_empty"
/>

person Compaq LE2202x    schedule 21.01.2016    source источник


Ответы (2)


Возможно, любая из этих дополнительных библиотек: http://android-arsenal.com/tag/84

сделает за вас ненужную работу. Обратите внимание, что некоторые из них не используют изображения.

Надеюсь, это поможет

person piotrek1543    schedule 23.01.2016

Итак, я использовал пользовательский рисунок layer-list, а Android сделает все остальное.

My RatingBar:

<RatingBar
    android:id="@+id/ratingbar_rate"
    style="@style/rateUsBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numStars="5"
    android:rating="0"
    android:stepSize="1"
    android:layout_gravity="center"
/>

In styles.xml:

<resources>
    ...
    ...
    <style name="rateUsBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/rating_stars</item>
        <item name="android:minHeight">@dimen/rate_us_star_minheight</item>
        <item name="android:maxHeight">@dimen/rate_us_star_maxheight</item>
    </style>
</resources>

In rating_stars.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@android:id/background"
        android:drawable="@drawable/rate_empty" /> //gray star for empty
    <item
        android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/rate_empty" /> //gray star for empty
    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/rate_filled" /> //yellow star for filled
</layer-list>

In dimens.xml:

<resources>
    ...
    ...
    <dimen name="rate_us_star_minheight"> <!--height of your image--> </dimen>
    <dimen name="rate_us_star_maxheight"> <!--height of your image--> </dimen>
</resources>

Вот и все!

person Compaq LE2202x    schedule 26.01.2016