Wie kann ich die Größe der Bewertungsleiste verringern?


129

In meiner Aktivität habe ich einige Bewertungsbalken. Aber die Größe dieser Bar ist so groß! Wie kann ich es kleiner machen?

Bearbeiten

Dank Gabriel Negut habe ich 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.


Meinst du eine Seekbar? Das Einstellen von Höhe und Breite funktioniert für mich einwandfrei. Können Sie hier Ihr Code-Snippet posten?
Shailendra Singh Rajawat

Ich würde empfehlen, das "Bearbeiten" zu entfernen und es stattdessen zur akzeptierten Antwort zu machen. Das oder @GabrielNegut kann seine Antwort bearbeiten, um diese Art von Lösung einzuschließen. Das Einbeziehen der Lösung in die Frage führt zu einer Beeinträchtigung der Q & A-Erfahrung.
Onebree

1
style="?android:attr/ratingBarStyleSmall"funktioniert bei mir.
Muhammad Shahzad

Antworten:


163

Der ursprüngliche Link, den ich gepostet habe, ist jetzt defekt (es gibt einen guten Grund, warum das Posten von Links nur nicht der beste Weg ist). Sie müssen den Stil RatingBarentweder mit ratingBarStyleSmalloder mit einem benutzerdefinierten Stil gestalten, der von erbt Widget.Material.RatingBar.Small(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"
    ... />

21
oder mit diesem Stil style = "? android: attr / RatingBarStyleSmall" wird die Größe reduziert.
Mightian

1
Aber es gibt eine nutzlose zusätzliche Polsterung auf der rechten Seite! Wie entferne ich das?!
Dr.jacky

Hinweis: Machen Sie width = "wrap_content", um zusätzliche Sterne loszuwerden
hkchakladar

72

Dies war meine Lösung, nachdem ich mich sehr bemüht hatte, die Bewertungsleiste in kleinen Größen 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" />

3
Ich habe mich angemeldet, um Ihre Antwort bezüglich der Verwendung von transformPivot zu verbessern, um das Problem der ungleichmäßigen Polsterung zu verringern. Vielen Dank!
Imin

Endlich keine Polsterung mehr !!
Uday

Super Antwort! Danke dir!
Valerybodak

1
Die Skalierung stört die Ausrichtung der Ansichten von Geschwistern und bringt Ränder und Abstände aus dem Gleichgewicht.
Prateek Gupta

63

Wenn Sie die Bewertungsleiste in kleiner Größe anzeigen möchten, kopieren Sie diesen Code einfach 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" />

3
Was ist Android: stepSize = "0.1"?
Darwin


Überprüfen Sie auch meine Antwort am Ende dieser Seite.
Developine

@HammadTariqSahi Es ist gut, weiter so, aber gibt es ein Problem in meinem Code? Lassen Sie mich wissen, wenn es etwas gibt, bitte
Pir Fahim Shah

@ PirFahimShah Danke, Bruder, ich habe diesen Code nicht überprüft. Sie können die Bewertungsleiste verbessern und stylen, wenn Sie diesem Ansatz folgen.
Developine

42

Sie können es im XML-Code für die RatingBar, verwenden scaleXund scaleYentsprechend anpassen. "1.0" wäre die normale Größe, und alles in ".0" verringert sie, auch alles, was größer als "1.0" ist, erhöht sie.

<RatingBar
  android:id="@+id/ratingBar1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:scaleX="0.5"
  android:scaleY="0.5" />

14
Das Problem dabei ist, dass die Bewertungsleiste immer noch dieselbe Breite und Höhe wie zuvor einnimmt, obwohl die Symbole kleiner sind. Dies führt zu Ausrichtungsproblemen, da neben dem ersten und dem letzten Symbol eine Reihe von linken und rechten Auffüllungen vorhanden sind. Wenn Sie beispielsweise möchten, dass Ihre Symbole wie folgt aussehen: "XXXXX", sieht es nach der Skalierung wie folgt aus: "----- XXXXX -----" wobei "-" ein leerer Bereich und "X" ein Symbol ist . Ihre Bewertungsleiste scheint also wegen des leeren Raums nach rechts
verschoben worden zu sein

1
Ich vermute, Sie verwenden ein relatives Layout. Es ist ein Schmerz, aber Sie können es optimieren, um in die richtige Position android:layout_marginRight zu gelangen, indem Sie und die Likes verwenden, um es so zu bekommen, wie Sie es möchten.
ZeWolfe15

4
Um eine Skalierung zu erhalten, ohne ein Padding auf der linken Seite zu erstellen, fügen Sie Android hinzu: transformPivotX = "0dp"
Darwin

37

Das folgende Snippet hat für mich funktioniert, um die Größe der Ratingleiste 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"/>

Geben Sie hier die Bildbeschreibung ein


2
Wie ändere ich die Farbe des Rattenbalkens für diese halbe, volle und leere Farbe dieses Bewertungsbalkens?
Ganpat Kaliya

Bewertungsparameter wird verwendet, um die Bewertungsleiste zu füllen, oder? Ich habe Android verwendet: Bewertung = "3.5", damit 3,5 Sterne gefüllt sind. Sie können bis zu 5 festlegen, da in der XML max = 5 festgelegt ist. Wenn Sie die Farben der Bewertungsleiste ändern möchten, müssen Sie einen Stil in style.xml erstellen. Siehe diesen Link: stackoverflow.com/a/35914622/2915785
Naveed Ahmad

wie man android: transformPivotX = "0dp" android: transformPivotY = "0dp" Programmatisch?
Salman Khakwani

1
@NaveedAhmad Aber rechts ist eine nutzlose Polsterung! Wie entferne ich das?!
Dr.jacky

@ Mr.Hyde überprüfen Sie die Stile von raringbar stackoverflow.com/a/24407907/2915785
Naveed Ahmad

10

Arbeitsbeispiel

             <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 Styles-XML-Datei 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.


9

Ü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 benutze gerne

<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
Können Sie näher erläutern, wie Sie zu der Lösung gekommen sind?
Onebree

Dies erlaubt keine RatingBarÄnderung.
CopsOnRoad

3

Wenn Sie die Bewertungsleiste im linearen Layout mit weightSum verwenden. Bitte stellen Sie sicher, dass Sie das layout_weight nicht für die Bewertungsleiste zuweisen. Platzieren Sie stattdessen die Bewertungsleiste im relativen Layout und geben Sie dem relativen Layout Gewicht. Erstellen Sie den Inhalt der Bewertungsbalkenbreite.

<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

Mit Widget.AppCompat.RatingBarkönnen Sie 2 Stile verwenden. Indicatorund Smallfür große bzw. kleine Größen. Siehe Beispiel unten.

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

2

Wenn Sie nur den Standardstil benötigen, stellen Sie sicher, dass Sie die folgende Breite / Höhe haben, da sonst die numStars durcheinander geraten können:

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

1
Wenn Sie diesen Stil verwenden, wird style = "? android: attr / RatingBarStyleSmall" die Größe reduzieren
Mightian


2

Fügen Sie im RatingBarTag diese beiden Zeilen hinzu

style="@style/Widget.AppCompat.RatingBar.Small"
android:isIndicator="false"

0

Für diejenigen, die programmgesteuert eine Bewertungsleiste erstellt haben und eine kleine Bewertungsleiste anstelle der standardmäßigen großen Bewertungsleiste festlegen möchten

    private LinearLayout generateRatingView (Gleitkommawert) {
        LinearLayout linearLayoutRating = neues 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")); // zum Aktivieren des halben Sterns
        RatingBar.setNumStars (5);
        RatingBar.setRating (Wert);
        linearLayoutRating.addView (RatingBar);
        return linearLayoutRating;
    }}


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

Verwenden Sie style="@style/Widget.AppCompat.RatingBar.Small"es einfach wird sicher funktionieren!


0

Das hat bei mir funktioniert.
Überprüfen Sie dieses Bild

            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" />
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.