Android: как изменить рейтинг панели рейтинга индикатора?

У меня есть панель рейтинга индикатора:

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleIndicator"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:rating="2.5"
    android:numStars="5"/>

Вы можете видеть, что xml сообщает полосе рейтинга, чтобы в настоящее время отображалось 2,5 звезды.

При нажатии кнопки я хочу, чтобы вместо этого отображались 5 звезд, поэтому я написал этот код:

indicatorRatingBar = (RatingBar) findViewById(R.id.ratingBar);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        indicatorRatingBar.setIsIndicator(false);
        indicatorRatingBar.setRating(5);
        indicatorRatingBar.setIsIndicator(true);
    }
});

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

Как я могу заставить это работать правильно с полосой рейтинга, установленной в стиле индикатора?


person Simon    schedule 04.07.2016    source источник


Ответы (2)


На самом деле я нашел ответ методом проб и ошибок. Мне просто нужно было вызвать недействительность представления, поскольку оно изменилось, и оно не аннулирует себя автоматически.

indicatorRatingBar = (RatingBar) findViewById(R.id.ratingBar);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        indicatorRatingBar.setRating(5);
        indicatorRatingBar.invalidate();
        indicatorRatingBar.setIsIndicator(true);
    }
});
person Simon    schedule 04.07.2016

Измените его на

indicatorRatingBar.setRating(5.0f);
person Dhruvi    schedule 04.07.2016
comment
Неа. Это не будет иметь никакого значения. - person Simon; 04.07.2016