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



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



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



спасибо заранее,
Роланд

543   16  

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.

дополнительно, если вы установите layout_weight, это заменяет

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

ниже параметры необходимы для правильной работы всех атрибутов:

  1. установить root до parent
  2. boolean attachToRoot как false

пример: convertView = инфлятор.надуть(Р. макета.myId, parent, false);

Comments

    Ничего не найдено.