2012-06-18 1 views
28

мне нужно вставить пробел между звездами моего ratingBar, Пример ratingbar хорошо:Пространство между звездами ratingBar

enter image description here

но мне это нужно таким образом:

enter image description here

как я могу это сделать?

+0

См [этот SO ответ] (http://stackoverflow.com/questions/4213784/spacing-between-the-stars-of-a- рейтинг-бар). – Eric

+1

Я добавил запрос функции, пожалуйста, проголосуйте за него: https://code.google.com/p/android/issues/detail?id=230511 –

ответ

3

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

Он оснащен:

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

Here is a preview of it.

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

ratingbar.setStarsSeparation(20, Dimension.DP); 

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

ratingbar.setStarsSeparation(100, Dimension.PX); 

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

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

+0

Он не поддерживает пользовательские возможности для звезд. Или это? – FoY

+0

Привет @FoY, это не так. – FlyingPumba

0

Я думаю, вам нужно будет захватить копию системного файла png и вручную добавить отступы, которые вы хотите использовать с помощью Photoshop/gimp/другого редактора.

+0

Согласно ссылкам, которые я опубликовал выше, я считаю, что вы можете настроить ' Drawable' используется для звезд, используя атрибуты размера для подделки заполнения (путем создания тега 'style' для' RatingBar'). – Eric

+0

этот путь был уродлив, не имеют способа в конфигурациях класса оценки – ademar111190

+0

@Soxxeh Хм, я не нашел пример этого в любой ссылке, которую вы опубликовали. Первый кажется более перспективным, но в первом предложении говорится: «Вы должны добавить дополнение к самому png» и продолжает показывать метод из класса ProgressBar. Я не вижу нигде стиля, который влияет на заполнение. Можете ли вы уточнить? – FoamyGuy

0

Я согласен с Тимом Я применил ту же логику, и это сработало. Здесь, в моем проекте, я использую свои собственные звездообразные изображения для звездного ратина. Я сделал звездообразные изображения с дополнительным пространством (дополнением) на правой стороне, что привело к пространству между звездами.

+1

Да, я согласен, но. Теперь рассмотрим следующее: вы создадите 4 типа рейтинговых баров в большом проекте, каждый балл рейтинга с 2 или 3 различными типами тиражных изображений - это около 10 изображений, которые, скажем, 2px пространства, теперь считают необходимым увеличить 1px пространство, I предпочитают менять setPadding (2) на setPadding (3) вместо повторной публикации, чем 10 изображений. – ademar111190

+0

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

+0

, к сожалению, не нашел ничего элегантного, чтобы решить эту проблему, я установил интервал в собственном образе :(, мне не понравилась проблема, разрешенная в надежде, что однажды найдет подходящий способ сделать это. – ademar111190

3

У вас есть следующее свойство.

android:progressDrawable = "@drawable/rating_stars" 
android:indeterminateDrawable = "@drawable/rating_stars" 

@ рисуемый/RATING_STARS:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+android:id/background" 
      android:drawable="@drawable/star_empty" /> 
    <item android:id="@+android:id/secondaryProgress" 
      android:drawable="@drawable/star_empty" /> 
    <item android:id="@+android:id/progress" 
      android:drawable="@drawable/star" /> 
</layer-list> 

star_empty и звезды являются изображениями, которые находятся в вашем вытяжке каталога. Итак, вы можете изменить звездочку и star_empty в графическом редакторе и добавить при необходимости spassing.

+3

Да, я согласитесь, но. Теперь рассмотрим следующее: вы создадите 4 типа рейтинговых баров в большом проекте, каждый балл рейтинга с тремя различными типами вытягиваемых составляет около 12 изображений, которые, скажем, 2px пространства, теперь считают необходимым увеличить пространство на 1px , Я предпочитаю менять setPadding (2) на setPadding (3) вместо повторной публикации, чем 10 изображений. – ademar111190

+0

Добавив вставку слева и/или справа от выделенного, мы получим ненужное дополнение слева и/или правую границу представления. – hqzxzwb

1

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