Звезды рейтинга не меняются

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

 <RatingBar
                android:id="@+id/ratingBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:numStars="5"
                android:stepSize="1"
                android:rating="1"
                android:progressDrawable="@drawable/rating_bar_color"/>

rating_bar_color.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@drawable/starw30" />
    <item android:id="@android:id/progress" android:drawable="@drawable/star" />
</layer-list>

Я использую этот код и что я получил в результате

введите здесь описание изображения

Откуда идут линии. Звезды имеют тот же размер, что и размер звезд по умолчанию.


person pmb    schedule 12.12.2013    source источник


Ответы (4)


Эти строки появляются из-за того, что вы пытаетесь обернуть изображение полосы рейтинга с помощью android:layout_height="wrap_content". Итак, в качестве решения вы должны обеспечить высоту полосы рейтинга размером изображения.

Если размер изображения строки рейтинга равен 20, попробуйте добавить

android:layout_height="20dip"

Это сработает для вас!

person Lalit Poptani    schedule 12.12.2013
comment
Почему это принято или даже ответ вообще? Тема «Звезды в рейтинге не меняются», а не «Как исправить вертикальные линии». - person Logic1; 10.07.2016

Просто попробуйте android:layout_height="20sp" или любые другие размеры звезд, которые вы используете.

Еще одна вещь, вам нужно определить стили для вашей индивидуальной панели рейтинга:

Например: my_ratingbar.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/rating_bar_color</item>
        <item name="android:minHeight">36dip</item> 
        <item name="android:maxHeight">36dip</item>
    </style>
</resources>
<!--Where 36dp is the size of image and include progress drawable here.

Примените этот стиль к RatingBar, используя:

<RatingBar   
  ...
   style="@style/my_ratingbar" />
person Paresh Mayani    schedule 12.12.2013
comment
ты уверен, что это android:layout_width что здесь важно? Насколько я знаю, это android:layout_height имеет значение! - person Lalit Poptani; 12.12.2013

Эта проблема возникла из-за неправильного масштабирования изображений. Решение этой проблемы состоит в том, чтобы следовать коэффициентам масштаба.

лдпи | мдпи | твдпи | hdpi | xhdpi | xxhdpi | хххдпи

0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4

person Ajay Vyas    schedule 02.01.2015

Эти просачивающиеся звезды происходят, когда размер объекта-звезды отличается от размера полосы рейтинга И у объекта-звезды нет прозрачного пространства между самой звездой и нижней границей. По какой-то причине Android пытается увеличить изображение, дублируя нижнюю часть актива, чтобы вы могли добавить немного прозрачного пространства внизу вашего актива, как я сделал в одном из своих проектов.

Вкратце: добавьте немного прозрачного пространства под звездочкой

person Edgar Davila    schedule 28.08.2015