Пространство Между звездами рейтингаБар

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

введите здесь описание изображения

но мне это нужно так:

введите здесь описание изображения

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


person ademar111190    schedule 18.06.2012    source источник
comment
См. этот ответ SO.   -  person Eric    schedule 19.06.2012
comment
Я добавил запрос функции, проголосуйте за него: code.google. com/p/android/issues/detail?id=230511   -  person Leos Literak    schedule 17.12.2016


Ответы (5)


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

Особенности:

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

Предварительный просмотр.

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

ratingbar.setStarsSeparation(20, Dimension.DP);

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

ratingbar.setStarsSeparation(100, Dimension.PX);

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

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

person FlyingPumba    schedule 22.11.2016
comment
Он не поддерживает пользовательский рисунок для звезд. Или это так? - person FoY; 23.03.2017
comment
Привет @FoY, это не так. - person FlyingPumba; 25.03.2017

У вас есть следующая собственность.

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

@drawable/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 - это изображения, которые находятся в вашем каталоге с возможностью рисования. Итак, вы можете изменить star и star_empty в графическом редакторе и добавить пробел, если вам нужно.

person i_Am    schedule 11.07.2012
comment
Да я согласен, но. Теперь рассмотрим следующее: вы создадите 4 типа рейтинговых панелей в большом проекте, каждая рейтинговая панель с 3 различными типами рисунков составляет около 12 изображений, которые помещают, скажем, 2 пикселя пространства, теперь считаю необходимым увеличить пространство 1 пикселя, я предпочитаю измените setPadding (2) на setPadding (3) вместо переиздания, чем 10 изображений - person ademar111190; 11.07.2012
comment
Добавляя вставку слева и/или справа от рисуемого, мы получаем нежелательные отступы на левой и/или правой границе представления. - person hqzxzwb; 18.05.2018

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

person Rajeev Kumar    schedule 14.06.2015

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

person FoamyGuy    schedule 18.06.2012
comment
Согласно ссылкам, которые я разместил выше, я считаю, что вы можете настроить Drawable, используемый для звезд, используя атрибуты размера для поддельного заполнения (путем настройки тега style для RatingBar). - person Eric; 19.06.2012
comment
этот способ был уродливым, у него нет способа в конфигурациях класса рейтинговой панели - person ademar111190; 19.06.2012
comment
@Soxxeh Хм, я не нашел примера этого ни в одной из ссылок, которые вы разместили. Первый вариант кажется более многообещающим, но в первом предложении говорится: «Вы должны добавить отступ к самому png» и дальше показывается метод из класса ProgressBar. Я нигде не вижу стиля, который повлиял бы на отступы. Можете ли вы уточнить? - person FoamyGuy; 19.06.2012
comment
@Tim Argh, мой плохой, я неправильно прочитал вторую ссылку, которую я разместил. (Он менял фактический размер изображения, а не размер + отступ...) Я прокомментирую это выше. - person Eric; 19.06.2012

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

person Meher    schedule 04.07.2012
comment
Да я согласен, но. Теперь рассмотрим следующее: вы создадите 4 типа рейтинговых панелей в большом проекте, каждая рейтинговая панель с 2 или 3 различными типами рисунков составляет около 10 изображений, которые помещают, скажем, 2 пикселя пространства, теперь думаю, что необходимо увеличить пространство 1 пикселя, я предпочитаю изменить setPadding(2) на setPadding(3) вместо переиздания, чем 10 изображений. - person ademar111190; 04.07.2012
comment
у вас есть решение на вашем пути. Пожалуйста, поделитесь, что вы пробовали лучше всего - person Meher; 10.09.2012
comment
к сожалению, не нашел ничего элегантного, чтобы решить эту проблему, я поставил пробел в собственном изображении :(, мне не понравилась проблема, решенная в надежде, что однажды я найду правильный способ сделать это. - person ademar111190; 10.09.2012