2015-10-08 2 views
1

Я показываю панель оценки в своем приложении, где я хочу уменьшить размеры звезды. так вот XML рейтингования барAndroid bar bar set star измерение

 <RatingBar 
       android:id="@+id/ratingBar" 
       style="?android:attr/ratingBarStyleSmall" 
       android:layout_marginLeft="20dp" 
       android:layout_marginRight="20dp" 
       android:layout_marginTop="10dp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:clickable="false" 
       android:max="5" 
       android:stepSize="0.25" 
       android:numStars="0" 
       android:focusable="false" 
       android:layout_gravity="center_horizontal" 
       android:focusableInTouchMode="false" 
       android:isIndicator="true"/> 

я настройка цвета и настройки рейтинга, как этот

private RatingBar ratingBar; 
Drawable ratingBarColor = ratingBar.getProgressDrawable(); 
ratingBar = (RatingBar) view.findViewById(R.id.ratingBar); 
Drawable ratingBarColor = ratingBar.getProgressDrawable(); 
ratingBar.setRating((float) (value)); 
DrawableCompat.setTint(ratingBarColor, ContextCompat.getColor(getActivity(), R.color.red)); 

Но проблема в том, независимо от значения цвета и десятичного наполнение не будет work.I я использую стиль, чтобы уменьшить размер звезды. strange - это если я удалю style атрибут в xml, он установит точное значение как звезду, но измерение сбрасывается до значения по умолчанию. Если я добавлю минимальную/максимальную высоту, то изображение будет обрезано. здесь есть та же проблема: - How to set the custom size of the stars in RatingBar проверено: style="?android:attr/ratingBarStyleIndicator" все тот же выпуск. Я не понимаю, что случилось с атрибутом стиля.

+0

уменьшить размер звезды – Destro

+0

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

+0

maxsize и minsize равны размеру изображения звезды, чем изображение не обрезано – Destro

ответ

1

Я не знаю, будет ли он полезен больше, но я создал специальную библиотеку, которая позволяет изменять размер звезды программно (среди прочего): SimpleRatingBar.

Он оснащен:

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

Here is a preview of it.

В вашем случае, вы просто должны сделать:

ratingbar.setStarSize(20, Dimension.DP); 

или, например, в пикселях:

ratingbar.setStarSize(100, Dimension.PX); 

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

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

+0

Спасибо за обмен. Позвольте мне попробовать. –