Android RatingBar setРейтинг не работает

Я пытаюсь отобразить значение int как ratingBar. Максимальное значение равно 5.

Это мой XML-файл:

<RatingBar
            android:id="@+id/ratBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:isIndicator="false"
            android:numStars="5" />

Но если я устанавливаю рейтинг с помощью setRating(), Android рисует много звезд. Я не могу понять, сколько, потому что мой экран слишком мал.

Кто-нибудь может сказать мне, что случилось?


person MasterCrumble    schedule 17.11.2012    source источник
comment
Можете ли вы показать код Java, который вы используете для установки рейтинга?   -  person Eric    schedule 18.11.2012
comment
Проклятия: rat.setRating(temp.getInt(rat)); temp.getInt(rat) дает мне целое число от 1 до 5.   -  person MasterCrumble    schedule 19.12.2012
comment
setRating() не изменяет количество звезд, а просто заполняет их. Можем ли мы увидеть полный код Java для настройки вашей рейтинговой панели?   -  person Wookie1120    schedule 03.01.2013


Ответы (4)


Я не мог понять, в чем именно ваша проблема, но использовать RatingBar в приложениях для Android в любом случае довольно просто. Вам нужно определить свой RatingBar в правильном месте;

<RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:isIndicator="true"
        android:max="5"
        android:numStars="3" />

получить ссылку на него в рамках вашей деятельности;

private RatingBar rb;
...
this.rb = (RatingBar) findViewById(R.id.ratingBar1);

и начните устанавливать значения, чтобы заполнить звезды;

this.rb.setRating(2); , this.rb.setRating((float)2.5); etc.

Если ваш экран слишком мал для отображения пяти звезд, вы можете установить количество звезд, как я сделал выше. И у вас есть несколько вариантов;

1) Вы можете разместить две шкалы рейтинга одну под другой, одну с 3, а другую с 2 звездами. Когда ваше число превысит 3, вы можете продолжить заполнять 2 звезды нижней панели рейтинга.

2) Если возможно, вы можете установить значения с плавающей запятой вместо целых чисел. Чтобы можно было поставить 1, 1,5, 2, 2,5, 3, 3,5 и т.д. и можно после небольшой алгебры набить 3 звезды за свой интервал 1-5.

person Alpay    schedule 04.01.2013

Вам нужно определить свои собственные стили, чтобы добиться того, что вы хотите для RatingBar. Попробуйте создать styles и примените этот стиль в своем представлении RatingBar.

Как это:

<?xml version="1.0" encoding="utf-8"?>
  <resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/food_ratingbar_full</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:maxHeight">48dip</item>
  </style> 
 </resources> 
 <RatingBar   android:id="@+id/my_rating_bar"
        ...
        style="@style/foodRatingBar" />

Подробнее см. здесь.

person GrIsHu    schedule 29.12.2012

вы также можете попробовать это

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleIndicator"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/artist"
    android:layout_below="@+id/artist"
    android:numStars="5"
    android:rating="2.0"
    android:stepSize="1.0" />
person Janmejoy    schedule 02.01.2013

Это происходит, когда рисунок, который вы установили в своем стиле для панели рейтинга, имеет различный размер png для фона, вторичного прогресса и прогресса.

Измените его на что-то вроде

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background"
        android:drawable="@android:color/transparent" />
    <item android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/star_half" />
    <item android:id="@android:id/progress"
        android:drawable="@drawable/star_full" />
person Debanjan    schedule 29.04.2016