Как сделать так, чтобы RatingBar показывал пять звезд - PullRequest
87 голосов
/ 04 октября 2010

Я следую стандартному примеру того, как добавить RatingBar. Для контроля количества звезд я попытался использовать android:numStars="5". Проблема в том, что количество звезд, похоже, ничего не делает. В макете портрета я получаю 6 звезд, а когда я переворачиваю телефон, я получаю около 10 звезд. Я попытался установить количество звездочек в моей активности (myBar.setNumStars(5)), которая загружает xml, но с этой опцией также не получилось.

Итак, мой вопрос: как мне определить мой макет, чтобы он показывал только пять звезд? Набор numStars не работает.

Заранее спасибо, Roland

Ответы [ 16 ]

155 голосов
/ 05 октября 2010
<RatingBar
            android:id="@+id/rating"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="?android:attr/ratingBarStyleSmall"
            android:numStars="5"
            android:stepSize="0.1"
            android:isIndicator="true" />

в коде

mRatingBar.setRating(int)
55 голосов
/ 11 сентября 2011

Документация RatingBar.setNumStar гласит:

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

Так что установка ширины макета на wrap_content должна решить эту проблему.

25 голосов
/ 24 января 2012

Это сработало для меня: RatingBar должно быть внутри LinearLayout, кроме установки ширины макета для переноса содержимого для RatingBar.

10 голосов
/ 30 мая 2012

Кроме того, если вы установите layout_weight, это заменит атрибут numStars.

5 голосов
/ 16 сентября 2014

Я также сталкиваюсь с проблемой, что превышение звезд по сравнению с указанным не звезд. Для этого нам не нужно беспокоиться о типе макета, относительном или линейном. Просто используйте ширину следующим образом:

ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));


избегайте , используя match_parent и fill_parent для рейтинг .
Надеюсь, что все будет полезно.

5 голосов
/ 22 ноября 2012
<RatingBar
                    android:id="@+id/ratingBar"
                    style="@style/custom_rating_bar"
                    android:layout_width="wrap_content"
                    android:layout_height="35dp"
                    android:clickable="true"
                    android:numStars="5" 
                    />

Настройка количества звездочек в XML-файле ... Не нужно указывать его в стилях или в разделе «Упражнение / фрагмент». ВАЖНО: Убедитесь, что вы поместили ШИРИНУ, так как содержимое переноса и веса не включены

4 голосов
/ 17 января 2018

Вы должны просто использовать numStars="5" в вашем XML и установите android:layout_width="wrap_content".
Затем вы можете поиграть со стилями и прочим, но "wrap_content" в layout_width - вот что делает трюк.

4 голосов
/ 06 декабря 2016

Если вы используете

android:layout_width="match_parent"

Используйте wrap_content, и он покажет только установленные numStars:)

android:layout_width="wrap_content"

3 голосов
/ 05 апреля 2011

Даже когда я столкнулся с проблемой @Roland, я включил еще один атрибут под названием

android:layout_alignParentRight="true" 

в моей RatingBar декларации в XML. Этот атрибут не позволяет устанавливать необходимые звезды и настраивать NumStars

Будьте в курсе проблем, с которыми вы сталкиваетесь!

2 голосов
/ 06 октября 2015

У меня была проблема, пока я не убрал отступы.Похоже, есть ошибка на некоторых устройствах, которая не изменяет размер представления для размещения отступов, а вместо этого сжимает содержимое.

Удалить padding, вместо этого используйте layout_margin.

...