Как сделать рейтинговую панель, чтобы показать пять звезд
Я следую стандартному примеру, как добавить RatingBar. Чтобы контролировать количество звезд я пытался использовать android:numStars="5". Проблема в том, что количество звезд, похоже, вообще ничего не делает. В портретном макете я получаю 6 звезд, и когда я переворачиваю телефон, я получаю около 10 звезд. Я попытался установить количество звезд в моей деятельности (myBar.setNumStars(5)), что загружает xml, но не было никакого успеха с этой опцией либо.
поэтому мой вопрос заключается в том, как я могу определить свой макет, чтобы он был только показать пять звезд? Набор numStars не работает.
спасибо заранее,
Роланд
16 ответов:
<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.
<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-файле... Нет необходимости предоставлять его в стилях или деятельности/фрагмент .... Важно: убедитесь, что вы ставите ширину как содержимое обертки и веса не включены
Я также столкнулся с проблемой, что превышение звезд, чем указано нет звезд. Для этого мы не хотим беспокоиться о том, какой тип макета-относительный или линейный. Просто используйте ширину следующим образом:
ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Пожалуйста избежать используя присваиваем и fill_parent на ratingbar.
Надеюсь, что вещи будут полезны.
даже я столкнулся с проблемой @Roland, я включил еще один атрибут под названием
android:layout_alignParentRight="true"в своем
RatingBarобъявление в XML. Этот атрибут не позволяет установить необходимые звезды и настроитьNumStarsдержите в курсе проблем, с которыми вы сталкиваетесь !
для меня, у меня была проблема, пока я не удалил обивку. Похоже, что на некоторых устройствах есть ошибка, которая не изменяет размер представления для размещения заполнения, а вместо этого сжимает содержимое.
удалить
paddingиспользуйтеlayout_marginвместо.
Если вы используете
android:layout_width="match_parent"используйте wrap_content и он будет показывать только набор numStars :)
android:layout_width="wrap_content"
значение по умолчанию устанавливается с andoid: рейтинг в XML-макете.
чтобы показать простой рейтинг звезды в круглой цифре просто используйте этот код
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; }и использовать его так
.setText (getIntToStar (4));
вы можете добавить рейтинг по умолчанию из пяти звезд в сторону XML layout
android:rating="5"Edit:
<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" />
вы должны просто использовать
numStars="5"в вашем XML и установитеandroid:layout_width="wrap_content".
Затем вы можете поиграть со стилями и другими вещами, но "wrap_content" в layout_width-это то, что делает трюк.
<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)ниже параметры необходимы для правильной работы всех атрибутов:
- установить
rootдоparent- boolean
attachToRootкакfalseпример: convertView = инфлятор.надуть(Р. макета.myId, parent, false);
Comments