Как сделать RatingBar, чтобы показать пять звезд

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

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

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

Solutions Collecting From Web of "Как сделать RatingBar, чтобы показать пять звезд"

 <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) 

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

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

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

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

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

 <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 … Не нужно предоставлять его в стилях или действии / фрагменте …. ВАЖНО: убедитесь, что вы помещаете WIDTH в качестве содержимого Wrap, и весы не включены

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

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

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

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

 android:layout_alignParentRight="true" 

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

Продолжайте размещать на проблемах, с которыми вы сталкиваетесь!

Значение по умолчанию устанавливается с помощью andoid: rating в макете xml.

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

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

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

android:layout_width="match_parent"

Используйте wrap_content, и он будет показывать только set numStars 🙂

android:layout_width="wrap_content"

Вы можете добавить рейтинг по умолчанию пяти звезд на стороне xml-макета

 android:rating="5" 

Редактировать:

 <RatingBar android:id="@+id/rb_vvm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginBottom="@dimen/space2" android:layout_marginTop="@dimen/space1" style="@style/RatingBar" android:numStars="5" android:stepSize="1" android:rating="5" /> 
 <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <RatingBar android:id="@+id/ruleRatingBar" android:isIndicator="true" android:numStars="5" android:stepSize="0.5" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

Я обнаружил, что RatingBar растягивается до максимального количества звезд, потому что он был заключен в таблицу с атрибутом android:stretchColumns = "*" .

После того, как я снял stretchCoulumns с всех столбцов, RatingBar отобразился в соответствии со значением android:numStars

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

 View android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot) 

Для всех атрибутов необходимы следующие параметры:

  1. Установите root в parent
  2. attachToRoot как false

Пример: convertView = inflater.inflate (R.layout.myId, parent, false);

Чтобы показать простой рейтинг звезды в круглой фигуре, просто используйте этот код

 public static String getIntToStar(int starCount) { String fillStar = "\u2605"; String blankStar = "\u2606"; String star = ""; for (int i = 0; i < starCount; i++) { star = star.concat(" " + fillStar); } for (int j = (5 - starCount); j > 0; j--) { star = star.concat(" " + blankStar); } return star; } 

И используйте его так

button.setText (getIntToStar (4));