Як я можу зменшити розмір панелі оцінок?


129

У своїй діяльності я маю кілька балів рейтингу. Але розмір цієї планки такий великий! Як я можу зробити її меншою?

Редагувати

Завдяки Габріелю Негуту я зробив це в наступному стилі:

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

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


Ви маєте на увазі Seekbar? Налаштування висоти та ширини для мене добре працює. Чи можете ви опублікувати фрагмент коду тут?
Шайлендра Сінгх Раджават

Я рекомендую видалити "редагування" і замість цього прийняти відповідь. Це чи @GabrielNegut може відредагувати свою відповідь, щоб включити таке рішення. Включення вирішення в питання питання віднімає досвід Q&A.
onebree

1
style="?android:attr/ratingBarStyleSmall"працює для мене.
Мухаммед Шахзад

Відповіді:


163

Оригінальне посилання, яке я опублікував, зараз зламане (є вагома причина, чому лише розміщення посилань - не найкращий шлях). Ви повинні мати стиль RatingBarз одним ratingBarStyleSmallабо користувацьким стилем, успадкованим від Widget.Material.RatingBar.Small(якщо ви використовуєте Матеріал дизайну у вашому додатку).

Варіант 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"
    ... />

21
або використовуючи цей стиль style = "? android: attr / ratingBarStyleSmall" зменшить розмір.
Магтіан

1
Але справа є марною додатковою підкладкою! Як це зняти ?!
Dr.jacky

Примітка: зробіть width = "wrap_content", щоб позбутися зайвих зірок
hkchakladar

72

Це було моїм рішенням після багатьох зусиль, щоб зменшити рейтинговий бар в невеликих розмірах, навіть не потворно проклавши

 <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" />

3
Я увійшов, щоб підтвердити вашу відповідь щодо використання transformPivot, щоб пом'якшити нерівномірну проблему накладки. Дякую!
imin

Нарешті більше немає підкладки !!
Удай

Дивовижна відповідь! Дякую!
валерібодак

1
Масштаб турбує вирівнювання представлених зрізних рядів, а також дисбаланси між полями та проміжками.
Prateek Gupta

63

Якщо ви хочете показати бар рейтингу невеликого розміру, просто скопіюйте та вставте цей код у свій проект.

  <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" />

3
Що таке android: stepSize = "0,1"?
Дарвін


також перевірити мій відповідь у кінці цієї сторінки.
Developine

@HammadTariqSahi Це добре, тримай, але чи є в моєму коді проблема? Дайте мені знати, чи є якась річ, будь ласка
Пір Фахім Шах

@PirFahimShah дякую, брат, я не перевірив цей код. ви можете вдосконалити та можете скористатись рядком рейтингу стилів, якщо дотримуватись цього підходу.
Developine

42

Ви можете встановити його в 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" />

14
Проблема з цим полягає в тому, що панель оцінок все ще займає ту саму ширину і висоту, що і раніше, навіть якщо значки менші. Це спричиняє проблеми з вирівнюванням, оскільки поруч із першим та останнім значками є купа лівої та правої накладки. Наприклад, якщо ви хочете, щоб ваші піктограми виглядали таким чином "XXXXX", після масштабування це буде виглядати приблизно так "----- XXXXX -----", де "-" порожній простір, а "X" - значок . Тож ваш рейтинговий рядок здасться, що його натиснули вправо через порожнє місце
TheDazzler

1
Я здогадуюсь, що ви використовуєте відносний макет. Це біль, але ви можете налаштувати його, щоб перейти в правильне положення, використовуючи android:layout_marginRight і любите, щоб отримати його так, як вам хочеться.
ZeWolfe15

4
щоб отримати масштаб, не створюючи накладки зліва, додайте android: transformPivotX = "0dp"
darwin

37

Фрагмент, наведений нижче, працював на мене, щоб змінити розмір рейтингу

<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"/>

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


2
як змінити колір штрихової смуги для цієї рейтингової половини, повного заповнення та порожнього кольору?
Ганпат Калія

Параметр рейтингу використовується для заповнення рядка рейтингу, правильно? Я використовував android: rating = "3.5", тому 3,5 зірки заповнені. Ви можете встановити до 5, оскільки в xml встановлено max = 5. Якщо ви хочете змінити кольори рейтингової панелі, вам слід створити стиль у стилі.xml дивіться за цим посиланням: stackoverflow.com/a/35914622/2915785
Naveed Ahmad

як на android: transformPivotX = "0dp" android: transformPivotY = "0dp" програмно?
Салман Хаквані

1
@NaveedAhmad Але справа є марною підкладкою! Як це зняти ?!
Dr.jacky

@ Mr.Hyde перевірити стилі raringbar stackoverflow.com/a/24407907/2915785
Навід Ахмад

10

Робочий приклад

             <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.


9

Перевірте мою відповідь тут . Найкращий спосіб досягти цього.

 <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" />

6
<RatingBar
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>

5
Не могли б ви детальніше розповісти, як ви дійшли до рішення?
onebree

Це не дозволяє RatingBarзмінитись.
CopsOnRoad

3

Якщо ви використовуєте смугу рейтингу в Linearlayout з weightSum. Будь ласка, переконайтеся, що ви не повинні призначати масу ваги layout для ваги рейтингу. Натомість, це місце для рейтингу розміщення всередині відносного макета та надасть вагу відносній схемі. Складіть вміст обгортання в ширину смуги.

<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>

3

Використовуючи Widget.AppCompat.RatingBar, у вас є два стилі; Indicatorі Smallдля великих і малих розмірів відповідно. Дивіться приклад нижче.

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

2

Якщо вам потрібен лише стиль за замовчуванням, переконайтеся, що ви маєте наступну ширину / висоту, інакше numStars може зіпсуватися:

android:layout_width="wrap_content"
android:layout_height="wrap_content"

1
використовуючи цей стиль style = "? android: attr / ratingBarStyleSmall" зменшить розмір
Mightian



0

Для тих, хто створив рейтинговий рядок програмно і бажає встановити невеликий рейтинговий рядок замість великого рейтингу за замовчуванням

    приватний LinearLayout generatorRatingView (плаваюче значення) {
        LinearLayout linearLayoutRating = новий LinearLayout (getContext ());
        linearLayoutRating.setLayoutParams (новий TableRow.LayoutParams (TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        linearLayoutRating.setGravity (Gravity.CENTER);
        RatingBar ratingBar = новий RatingBar (getContext (), null, android.R.attr.ratingBarStyleSmall);
        ratingBar.setEnabled (помилково);
        ratingBar.setStepSize (Float.parseFloat ("0,5")); // для включення півзірки
        ratingBar.setNumStars (5);
        ratingBar.setRating (значення);
        linearLayoutRating.addView (ratingBar);
        повернути лінійнуLayoutRating;
    }


0
 <RatingBar     android:id="@+id/id_tv_rating_bar"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/_20sdp"
                android:layout_marginLeft="@dimen/_80sdp"
                android:numStars="5"
                android:paddingTop="@dimen/_5sdp"
                android:rating="5" />

Просто використовуйте style="@style/Widget.AppCompat.RatingBar.Small"це буде працювати напевно!


0

Це працювало для мене.
Перевірте це зображення

            android:id="@+id/ratingBar"
            style="?android:attr/ratingBarStyleIndicator"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numStars="5"
            android:scaleX=".8"
            android:scaleY=".8"
            android:stepSize="0.5"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.543"
            app:layout_constraintStart_toEndOf="@+id/title"
            app:layout_constraintTop_toTopOf="parent" />
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.