Когда я использую пользовательские звезды для Android RatingBar, всегда показывайте половину звезды для десятичных значений ниже 0,5 - программирование
Подтвердить что ты не робот

Когда я использую пользовательские звезды для Android RatingBar, всегда показывайте половину звезды для десятичных значений ниже 0,5

Я просмотрел ряд сообщений (например, Android RatingBar изменил цвет звезд, Измените цвет звезд в баре рейтинга, где рейтинг-бара динамически создается в андроиде, Как установить цвет звезды в панели оценки?), чтобы изменить цвета звезд в RatingBar. Я следил за сообщениями и смог изменить звезды для пользовательского RatingBar, но при этом я больше не мог установить значение десятичной единицы ниже половины (например, 0.2). Он всегда будет отображаться как половина (например, 0,5). Когда я устанавливаю значение выше половины (например, 0,7), оно отображается отлично.

Ниже приведены образцы изображений, которые я использую для своего пользовательского RatingBar (например, ratingbar_empty.png, ratingbar_half.png, ratingbar_full.png)

Empty StarHalf StarFull Star

Ниже приведен xml для использования пользовательских звезд (ratingbar_custom.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/ratingbar_empty" />
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/ratingbar_half" />
    <item android:id="@android:id/progress" android:drawable="@drawable/ratingbar_full" />
</layer-list>'

Далее следует, как я использую свой собственный RatingBar в своем макете.

<RatingBar 
    android:id="@+id/rb_rating"
    android:numStars="7"
    android:rating="0"      
    android:stepSize="0.01"                     
    android:isIndicator="true"                                                            
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:progressDrawable="@drawable/ratingbar_custom" />

Когда я затем объединим все вместе и устанавливаю значение RatingBar равным 0,2, он визуально устанавливает RatingBar на 0,5, как показано ниже. У кого-нибудь есть идеи, почему это происходит или что я делаю неправильно? Любая помощь будет принята с благодарностью. Благодаря

Setting custom RatingBar to 0.2, but visually showing 0.5

4b9b3361

Ответ 1

Вам не нужен star_half.

Попробуйте сделать вот так:

<?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/star_none" />
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/star_none" />
    <item android:id="@android:id/progress" android:drawable="@drawable/star_fill" />
</layer-list>