In meiner Aktivität habe ich einige Bewertungsbalken. Aber die Größe dieser Leiste ist so groß! Wie kann ich sie verkleinern?
Bearbeiten
Vielen Dank an Gabriel Negut. Ich habe es mit folgendem Stil gemacht:
<RatingBar
style = "?android:attr/ratingBarStyleSmall"
Android:numStars = "5"
Android:rating = "4" />
Jetzt wird die Größe reduziert, aber die Anzahl der Sterne und die Bewertung werden nicht wirksam !!! Warum? Ich habe 7 Sterne, von denen 6 ausgewählt sind.
Der ursprüngliche Link, den ich gepostet habe, ist jetzt defekt (es gibt einen guten Grund, warum das Posten von Links nicht der beste Weg ist). Sie müssen die Variable RatingBar
entweder mit ratingBarStyleSmall
oder mit einem benutzerdefinierten Stil formatieren, der von Widget.Material.RatingBar.Small
erbt (vorausgesetzt, Sie verwenden Material Design in Ihrer App).
Option 1:
<RatingBar
Android:id="@+id/ratingBar"
style="?android:attr/ratingBarStyleSmall"
... />
Option 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"
... />
Wenn Sie die Bewertungsleiste klein anzeigen möchten, kopieren Sie diesen Code und fügen Sie ihn in Ihr Projekt ein.
<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" />
Dies war meine Lösung, nachdem ich mich bemüht hatte, die Bewertungsleiste in geringer Größe ohne hässliche Polsterung zu reduzieren
<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" />
Sie können dies im XML-Code für die Variable RatingBar
festlegen und mit scaleX
und scaleY
entsprechend anpassen. "1.0" wäre die normale Größe, und alles in ".0" verringert es, auch etwas größer als "1.0" erhöht es.
<RatingBar
Android:id="@+id/ratingBar1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:scaleX="0.5"
Android:scaleY="0.5" />
Der folgende Ausschnitt funktionierte für mich, um die Bewertungsleiste zu ändern
<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"/>
<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" />
und fügen Sie dies in Ihre XML-Formatdatei ein
<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>
Auf diese Weise müssen Sie die Bewertungsleiste nicht anpassen.
<RatingBar
style="?android:attr/ratingBarStyleIndicator"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
/>
Überprüfen Sie meine Antwort hier . Der beste Weg, um es zu erreichen.
<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>
und verwenden Sie wie
<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" />
Wenn Sie die Bewertungsleiste in Linearlayout mit weightSum verwenden. Bitte stellen Sie sicher, dass Sie das layout_weight nicht für die Bewertungsleiste zuweisen. Platzieren Sie stattdessen die Bewertungsleiste innerhalb des relativen Layouts und geben Sie dem relativen Layout Gewicht. Bilden Sie den Inhalt für die Breite der Bewertungsleistenbreite.
<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>
Mit Widget.AppCompat.RatingBar
können Sie zwei Stile verwenden. Indicator
und Small
für große bzw. kleine Größen. Siehe Beispiel unten.
<RatingBar
Android:id="@+id/rating_star_value"
style="@style/Widget.AppCompat.RatingBar.Small"
... />
Wenn Sie nur den Standardstil benötigen, stellen Sie sicher, dass Sie über die folgende Breite/Höhe verfügen. Andernfalls könnten die numStars beschädigt werden:
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
In RatingBar
geben Sie das Attribut:
style="?android:attr/ratingBarStyleIndicator"
Für diejenigen, die eine Bewertungsleiste programmgesteuert erstellt haben und statt einer großen Standard-Bewertungsleiste eine kleine Bewertungsleiste festlegen möchten
private LinearLayout generateRatingView (Gleitkommawert) { LinearLayout linearLayoutRating = new LinearLayout (getContext ()); linearLayoutRating.setLayoutParams (neue TableRow.LayoutParams (TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));. linearLayoutRating.setGravity (Gravity.CENTER); RatingBar ratingBar = neue RatingBar (getContext (), null, Android.R.attr.ratingBarStyleSmall); ratingBar.setEnabled (false); ratingBar.setStepSize (Float.parseFloat ("0.5")); // zur Aktivierung des halben Sterns ratingBar.setNumStars (5); ratingBar.setRating (Wert); linearLayoutRating.addView (ratingBar); return linearLayoutRating; }