Android Rating Bar показывает только полные звезды, а не половину звезд

Я использую рейтинговые бары в своем приложении для Android. Но он показывает только полные звезды, когда мне также нужны полузвезды.

Я вставил строку SQLite с именем и ratingValue, там ratingValue стоит как "3.5", но мое приложение превращает его в "4". Даже если мой StepSize равен "0,5", даже значение по умолчанию изменяется на "3"

EDIT: Если вы нажмете на listrow, он отобразит другую рейтинговую панель, которую вы можете "оценить", и если вы нажмете на кнопку, она отправит значение рейтинга в базу данных. Список RatingBar listitem предназначен только для показа "среднего" рейтинга, но там, где он идет не так, он округляет значение вверх

ИЗМЕНИТЬ 2: установите stepize в 0.1 и теперь, как ни странно, только средняя звезда принимает число с плавающей точкой... Остальные звезды все еще полны И если я установил рейтинг на 1.2, только вторая звезда примет значение float, 0.2 первое и т.д., Но другие звезды (не в этом диапазоне) будут только или полными или пустыми

Здесь некоторый код

ListItem_layout

<TableRow>    
    <RatingBar
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/sportsRatingBar"
        android:gravity="center_horizontal"
        android:focusableInTouchMode="false"
        android:isIndicator="true"
        android:clickable="false"
        android:focusable="false"
        android:layout_column="1"
        android:rating="1.1"
        android:stepSize="0.1" />

ListItem

if(ratingBar!=null) {
                ratingBar.setRating(p.getRating());
                ratingBar.setTag(p.getId());
            }

Класс повторного использования

public float getRating() { return Rating; }

Столбец таблицы SQLite для оценки

 COLUMN_RATING + " real not null);"

И, наконец, получение из базы данных

c.getFloat(COLUMN_RATING_COL));

некоторые изображения для объяснения после установки первой рейтинговой панели до 2.6

Ответ 1

Я думаю, что для этого вам не нужна библиотека, я просто попробовал, и она работает.

<android.support.v7.widget.AppCompatRatingBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="?android:attr/ratingBarStyle"
    android:background="@android:color/holo_red_dark"
    android:id="@+id/ratingBar1"
    android:stepSize="0.1"
    android:rating="2.5"/>

Я установил значение start в 4.5, и он работает таким образом.

RatingBar ratingBar = (RatingBar) findViewById(R.id.coloredRatingBar1);
    ratingBar.setRating(4.8f);
    ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
        @Override
        public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
            Log.i(TAG, "onRatingChanged: rating : "+rating);
        }
    });

Ответ 2

В первую очередь определяется способ определения рейтинга, он не может принимать значения. Для параметра Clickable установлено значение false, а isIndicator - true. Чтобы принять ввод, определите виджет следующим образом.

<RatingBar
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/sportsRatingBar"
        android:gravity="center_horizontal"
        android:rating="2.5"
        android:stepSize="0.5" />

Для получения значений, которые не уверены в настройке переменной Rating

Посмотрите изображение, как выглядит виджетов как!