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.

Hesam
quelle
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"
    ... />
Gabriel Negut
quelle
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" />
TechArcSri
quelle
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" />
Pir Fahim Shah
quelle
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" />
ZeWolfe15
quelle
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

Naveed Ahmad
quelle
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.

Entwickeln
quelle
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" />
AMAN SINGH
quelle
6
<RatingBar
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>
nafees4343
quelle
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>
Varnith Kumar M.
quelle
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"
    ... />
Ugokoli
quelle
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"
Sean
quelle
1
Wenn Sie diesen Stil verwenden, wird style = "? android: attr / RatingBarStyleSmall" die Größe reduzieren
Mightian
2

In RatingBarAttribut geben:

style="?android:attr/ratingBarStyleIndicator" 
rajlaxmi_jagdale
quelle
2

Fügen Sie im RatingBarTag diese beiden Zeilen hinzu

style="@style/Widget.AppCompat.RatingBar.Small"
android:isIndicator="false"
Mirza Haider
quelle
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;
    }}

Sachin Tanpure
quelle
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!

Prateek Gupta
quelle
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" />
Syed Umair
quelle