W swojej działalności mam kilka pasków ratingowych. Ale rozmiar tego paska jest taki duży! Jak mogę to zmniejszyć?
Edytować
Dzięki Gabrielowi Negutowi zrobiłem to w następującym stylu:
<RatingBar
style = "?android:attr/ratingBarStyleSmall"
android:numStars = "5"
android:rating = "4" />
Teraz rozmiar jest zmniejszony, ale liczba gwiazdek i ocena nie działają !!! Czemu? Mam 7 gwiazdek, z których 6 jest wybranych.
android
rating-system
Hesam
źródło
źródło
style="?android:attr/ratingBarStyleSmall"
pracuje dla mnie.Odpowiedzi:
Oryginalny link, który opublikowałem, jest teraz uszkodzony (istnieje dobry powód, dla którego publikowanie samych linków nie jest najlepszym sposobem). Musisz stylizować za
RatingBar
pomocą styluratingBarStyleSmall
lub stylu niestandardowego dziedziczącego poWidget.Material.RatingBar.Small
(zakładając, że używasz Material Design w swojej aplikacji).Opcja 1:
<RatingBar android:id="@+id/ratingBar" style="?android:attr/ratingBarStyleSmall" ... />
Opcja 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" ... />
źródło
To było moje rozwiązanie po wielu zmaganiach, aby zmniejszyć pasek oceny w małym rozmiarze bez nawet brzydkiego wypełnienia
<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" />
źródło
Jeśli chcesz wyświetlić pasek oceny w małym rozmiarze, po prostu skopiuj i wklej ten kod do swojego projektu.
<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" />
źródło
Możesz ustawić go w kodzie XML dla
RatingBar
, użyćscaleX
iscaleY
odpowiednio dostosować. „1.0” będzie normalnym rozmiarem, a cokolwiek w „.0” go zmniejszy, a także wszystko większe niż „1,0” zwiększy go.<RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleX="0.5" android:scaleY="0.5" />
źródło
android:layout_marginRight
i lubi, aby uzyskać tak, jak chcesz.Poniższy fragment zadziałał, aby zmienić rozmiar paska ratingowego
<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"/>
źródło
Przykład roboczy
<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" />
i dodaj to do swojego pliku stylów 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>
W ten sposób nie musisz dostosowywać ratingBar.
źródło
Sprawdź moją odpowiedź tutaj . Najlepszy sposób na osiągnięcie tego.
<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>
i użyj jak
<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" />
źródło
<RatingBar style="?android:attr/ratingBarStyleIndicator" android:layout_width="wrap_content" android:layout_height="wrap_content" />
źródło
RatingBar
na zmianę.Używając
Widget.AppCompat.RatingBar
, masz 2 style do użycia;Indicator
i odpowiednioSmall
dla dużych i małych rozmiarów. Zobacz przykład poniżej.<RatingBar android:id="@+id/rating_star_value" style="@style/Widget.AppCompat.RatingBar.Small" ... />
źródło
Jeśli używasz paska oceny w Linearlayout z weightSum. Upewnij się, że nie powinieneś przypisywać lay_weight do paska oceny. Zamiast tego umieść pasek oceny w układzie względnym i nadaj wagę układowi względnemu. Utwórz zawartość zawijania szerokości paska oceny.
<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>
źródło
W
RatingBar
tagu dodaj te dwie liniestyle="@style/Widget.AppCompat.RatingBar.Small" android:isIndicator="false"
źródło
Jeśli potrzebujesz tylko domyślnego stylu, upewnij się, że masz następującą szerokość / wysokość, w przeciwnym razie numStars może się pomylić:
android:layout_width="wrap_content" android:layout_height="wrap_content"
źródło
W
RatingBar
atrybucie podać:style="?android:attr/ratingBarStyleIndicator"
źródło
To zadziałało dla mnie.
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" />
źródło
Dla tych, którzy programowo utworzyli pasek oceny i chcą ustawić mały pasek oceny zamiast domyślnego dużego paska oceny
źródło
<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" />
Po prostu użyj
style="@style/Widget.AppCompat.RatingBar.Small"
, będzie działać na pewno!źródło