Как я могу уменьшить размер Ratingbar? - PullRequest
113 голосов
/ 27 мая 2011

В моей деятельности у меня есть несколько Рейтинговых баров. Но размер этого бара такой большой! Как я могу сделать его меньше?

Редактировать

Благодаря Габриэлю Негуту, Я сделал это в следующем стиле:

<RatingBar
style = "?android:attr/ratingBarStyleSmall"
android:numStars = "5"
android:rating   = "4" />

Теперь размер уменьшен, но количество звезд и рейтинг не вступают в силу !!! Зачем? У меня 7 звезд, 6 из которых выбрано.

Ответы [ 13 ]

129 голосов
/ 27 мая 2011

Исходная ссылка, которую я разместил, теперь не работает (есть веская причина, почему публикация ссылок - не лучший способ). Вы должны стилизовать RatingBar либо ratingBarStyleSmall, либо пользовательский стиль, унаследованный от Widget.Material.RatingBar.Small (при условии, что вы используете Material Design в своем приложении).

Вариант 1:

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleSmall"
    ... />

Вариант 2:

// styles.xml
<style name="customRatingBar"   
    parent="android:style/Widget.Material.RatingBar.Small">
    ... // Additional customizations
</style>

// layout.xml
<RatingBar
    android:id="@+id/ratingBar"
    style="@style/customRatingBar"
    ... />
61 голосов
/ 03 июля 2015

Это было моё решение после того, как я изо всех сил пытался уменьшить рейтинг в маленьком размере без даже уродливого заполнения.

 <RatingBar
        android:id="@+id/listitemrating"
        style="@android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleX=".5"
        android:scaleY=".5"
        android:transformPivotX="0dp"
        android:transformPivotY="0dp"
        android:isIndicator="true"
        android:max="5" />
61 голосов
/ 25 июня 2014

Если вы хотите показать строку рейтинга в небольшом размере, просто скопируйте и вставьте этот код в ваш проект.

  <RatingBar
    android:id="@+id/MyRating"
    style="?android:attr/ratingBarStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/getRating"
    android:isIndicator="true"
    android:numStars="5"
    android:stepSize="0.1" />
38 голосов
/ 03 марта 2014

Вы можете установить его в XML-коде для RatingBar, используйте scaleX и scaleY для соответствующей настройки. «1.0» будет нормальным размером, и все, что в «.0» уменьшит его, а также все, что больше «1.0», увеличит его.

<RatingBar
  android:id="@+id/ratingBar1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:scaleX="0.5"
  android:scaleY="0.5" />
31 голосов
/ 03 декабря 2016

Данный фрагмент кода помог мне изменить размер рейтинга.

<RatingBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleIndicator"
    android:scaleX=".5"
    android:rating="3.5"
    android:scaleY=".5"
    android:transformPivotX="0dp"
    android:transformPivotY="0dp"
    android:max="5"/>

enter image description here

8 голосов
/ 18 мая 2016

Рабочий пример

             <RatingBar
                style="@style/RatingBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:numStars="5"
                android:rating="3.5"
                android:stepSize="0.5" />

и добавьте его в свой XML-файл стилей

<style name="RatingBar"   
parent="android:style/Widget.Material.RatingBar.Small">
<item name="colorControlNormal">@color/primary_light</item>
<item name="colorControlActivated">@color/primary_dark</item>
</style>

Таким образом, вам не нужно настраивать ratingBar.

6 голосов
/ 18 августа 2015
<RatingBar
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>
5 голосов
/ 17 апреля 2018

Проверьте мой ответ здесь .Лучший способ достичь этого.

 <style name="MyRatingBar" parent="@android:style/Widget.RatingBar">
   <item name="android:minHeight">15dp</item>
   <item name="android:maxHeight">15dp</item>
   <item name="colorControlNormal">@color/white</item>
   <item name="colorControlActivated">@color/home_add</item>
</style>

и использовать как

<RatingBar
    style="?android:attr/ratingBarStyleIndicator"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:isIndicator="false"
      android:max="5"
      android:rating="3"
      android:scaleX=".8"
      android:scaleY=".8"
      android:theme="@style/MyRatingBar" />
3 голосов
/ 29 июня 2018

Если вы используете Рейтинговую строку в Linearlayout с weightSum. Пожалуйста, убедитесь, что вы не должны назначать layout_weight для строки рейтинга. Вместо этого поместите строку рейтинга в относительное расположение и придайте вес относительному расположению. Сделать обтекание ширины строки рейтинга.

<RelativeLayout
    android:layout_width="0dp"
    android:layout_weight="30"
    android:layout_gravity="center"
    android:layout_height="wrap_content">
        <RatingBar
            android:id="@+id/userRating"
            style="@style/Widget.AppCompat.RatingBar.Small"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:stepSize="1" />
</RelativeLayout>
2 голосов
/ 30 августа 2018

Используя Widget.AppCompat.RatingBar, вы можете использовать 2 стиля; Indicator и Small для больших и малых размеров соответственно. Смотрите пример ниже.

<RatingBar
    android:id="@+id/rating_star_value"
    style="@style/Widget.AppCompat.RatingBar.Small"
    ... />
...