Android RatingBar — размер шага в четверть звезды

Я работаю со шкалой рейтинга по умолчанию и требую, чтобы stepSize был равен 0,25 — согласно документам, это должно быть простым вопросом установки атрибута xml android:stepSize в 0.25.

В настоящее время это на месте, а общий xml выглядит следующим образом:

<RatingBar 
        android:id="@+id/ratingbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/RatingBarBig"
        android:layout_below="@+id/score"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal"
        android:paddingBottom="5dp"
        android:layout_centerVertical="true"
        android:isIndicator="true"
        android:stepSize="0.25"
        android:numStars="5"
        android:rating="0"/>

Я программно заполняю панель рейтинга числом с плавающей запятой 3.25, используя следующий код:

float rating = 3.25f;
RatingBar mRating = (RatingBar) findViewById(R.id.ratingbar);
mRating.setRating(rating);

Итак, проблема в том, что сама полоса рейтинга заполняется, чтобы показать 3.5 вместо 3.25. Я даже установил Log.d уведомлений как для rating поплавка, так и для mRating.getRating выходных данных.

У кого-нибудь есть идеи?


person Xarus    schedule 03.02.2014    source источник


Ответы (2)


Ах, так что после 2 дней попыток понять это я, наконец, спрашиваю ТАК, и что происходит? Я понял это минут через десять...

Проблема была в моем чертеже.

Что я забыл упомянуть, так это то, что я использую второй RatingBar, наложенный поверх первого (только с пустыми прозрачными звездами), так как я использую цветовой фильтр на основном, чтобы изменить цвет звезды в зависимости от рейтинга (красный, желтый, зеленый).

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

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

person Xarus    schedule 03.02.2014

Попробуйте задать размер шага программно:

mRating.setStepSize((float) 0.25);

вызовите это перед mRating.setRating(rating);

Посмотрите, работает ли это

person gilonm    schedule 03.02.2014
comment
Я понял это - я отправил ответ, который приму через 2 дня. Оказывается, это были мои рисунки - код в порядке. - person Xarus; 03.02.2014