2016-09-13 6 views
6

У меня стандартная реализация RatingBar. 5 звезд, 1 в шасси.Android RatingBar имеет «плохой» порог для определенных устройств, исправить?

<RatingBar 
    android:id="@+id/ratingBar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:numStars="5" 
    android:stepSize="1" 
    android:progressDrawable="@drawable/dark" 
    android:rating="@={viewModel.rating}" 
/> 

Я заметил, что у меня есть проблемы на некоторых устройствах, или брендов на самом деле: Samsung, Nexus, может быть, больше ... Но у меня нет вопроса о Sony и LG устройств, может быть, больше здесь Что ж.

Проблема в том, что точность при выборе значения действительно плохая. Кажется, что если я пройду посередине рейтинга, он заполнит следующую «звезду». Кажется, это порог для этих устройств, и так оно и есть. Они, как LG и Sony ведет себя, - это то, что, пройдя половину расстояния между двумя «звездами», она заполняет следующую звезду.

Итак, есть ли что-нибудь, что я могу сделать, чтобы предотвратить это?

ответ

1

Насколько я знаю, вокруг нет никакого способа.

Я создатель библиотеки, которая предоставляет альтернативу Android по умолчанию RatingBar: SimpleRatingBar, и мы обсуждали это поведение в одном issue.

В библиотеке мы изменили это поведение, поэтому одна звезда будет выбрана, только если не менее 1/4 ее нажата. Я считаю, что это улучшает общий опыт при использовании.

Если вы хотите, вы можете попробовать. Это показывает:

  • Полностью рабочий android:layout_width: он может быть установлен в wrap_content, match_parent или abritary дп.
  • Произвольное количество звезд.
  • Произвольный шаг размер.
  • Размер звезд можно контролировать точно или задавая максимальный размер.
  • Настраиваемые цвета в нормальном состоянии (граница, заполнение и фон звезд и рейтинговая панель).
  • Настраиваемые цвета в нажатом состоянии (граница, заполнение и фон звезд и индикаторная панель).
  • Настраиваемый размер между звездами.
  • Настраиваемая ширина границ звезд.
  • Настраиваемые радиус угла звезды.
  • Позволяет установить OnRatingBarChangeListener
  • Заполнение звездочек может начинаться слева направо или справа налево (поддержка языка RTL).
  • AnimationBuilder интегрирован в представление, чтобы установить рейтинг программно с анимацией.

Here is a preview of it

Вы можете найти его или в jcenter или в Maven Central. Таким образом, в файл build.gradle просто добавить к вашей зависимости:

compile 'com.iarcuschin:simpleratingbar:0.1.+'

Я надеюсь, что это полезно.