it-swarm.com.de

Wie kann man RatingBar fünf Sterne anzeigen lassen?

Ich folge dem Standardbeispiel für das Hinzufügen einer RatingBar. Um die Anzahl der Sterne zu kontrollieren, habe ich versucht, Android:numStars="5" zu verwenden. Das Problem ist, dass die Anzahl der Sterne überhaupt nichts zu tun scheint. Im Portrait-Layout bekomme ich 6 Sterne und wenn ich das Telefon umlege, bekomme ich etwa 10 Sterne. Ich habe versucht, die Anzahl der Sterne in meiner Aktivität (myBar.setNumStars(5)) festzulegen, die die XML-Datei lädt, aber mit dieser Option war auch kein Erfolg zu verzeichnen. 

Meine Frage ist also, wie definiere ich mein Layout so, dass es nur fünf Sterne zeigt? Set numStars scheint nicht zu funktionieren.

Vielen Dank im Voraus, Roland

83
Roland
<RatingBar
            Android:id="@+id/rating"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            style="?android:attr/ratingBarStyleSmall"
            Android:numStars="5"
            Android:stepSize="0.1"
            Android:isIndicator="true" />

in Code 

mRatingBar.setRating(int)
148
Alex Volovoy

Die RatingBar.setNumStar-Dokumentation sagt:

Legt die Anzahl der Sterne fest, die angezeigt werden sollen. Damit diese angezeigt werden In diesem Fall wird empfohlen, die Layoutbreite dieses Widgets umzuwickeln Inhalt.

Durch Festlegen der Layoutbreite auf wrap_content sollte dieses Problem gelöst werden.

53
Lisandro

Dies funktionierte für mich: RatingBar sollte sich innerhalb von LinearLayout befinden, außer dass die Layoutbreite so eingestellt ist, dass der Inhalt für RatingBar umbrochen wird. 

25
Supun

Wenn Sie einen layout_weight setzen, ersetzt dies zusätzlich das numStars-Attribut.

10
jsimon
<RatingBar
                    Android:id="@+id/ratingBar"
                    style="@style/custom_rating_bar"
                    Android:layout_width="wrap_content"
                    Android:layout_height="35dp"
                    Android:clickable="true"
                    Android:numStars="5" 
                    />

Konfigurieren Sie die Anzahl der Sterne in der XML-Datei ... Sie müssen sie nicht in "Styles" oder "Activity/Fragment" angeben .....__

5
Ajith Memana

Ich stehe auch vor dem Problem, dass die Anzahl der Sterne nicht überschritten wird. Daher möchten wir uns weder um das relative noch das lineare Layout des Layouttyps kümmern. Verwenden Sie einfach die Breite wie folgt:

ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));


Bitte vermeiden Verwenden von match_parent und fill_parent für ratingbar .
Ich hoffe die Dinge wären hilfreich.

5
Deva

Sie sollten einfach numStars="5" in Ihrem XML verwenden und Android:layout_width="wrap_content" setzen.
Dann können Sie mit Stilen und anderem Zeug herumspielen, aber der "wrap_content" in layout_width ist der Trick.

4
Adrián Alvarez

Wenn Sie verwenden 

Android:layout_width="match_parent"

Verwenden Sie wrap_content und es werden nur die eingestellten numStars angezeigt :)

Android:layout_width="wrap_content"

4
MQoder

Selbst wenn ich mit dem Problem @Roland konfrontiert wurde, hatte ich noch ein weiteres Attribut mit dem Namen hinzugefügt 

Android:layout_alignParentRight="true" 

in meiner RatingBar-Deklaration in XML. Dieses Attribut verhindert das Setzen der erforderlichen Sterne und das Einrichten der NumStars

Bleiben Sie auf dem Laufenden über die Probleme, auf die Sie stoßen!

3
ReachmeDroid

Für mich hatte ich ein Problem, bis ich die Polsterung entfernte. Anscheinend gibt es einen Fehler auf bestimmten Geräten, der die Größe der Ansicht nicht verändert, um die Auffüllung zu berücksichtigen, sondern den Inhalt komprimiert.

Entfernen Sie padding und verwenden Sie stattdessen layout_margin.

2
John Leehey

Um eine einfache Sternebewertung in runder Abbildung anzuzeigen, verwenden Sie einfach diesen Code

public static String getIntToStar(int starCount) {
        String fillStar = "\u2605";
        String blankStar = "\u2606";
        String star = "";

        for (int i = 0; i < starCount; i++) {
            star = star.concat(" " + fillStar);
        }
        for (int j = (5 - starCount); j > 0; j--) {
            star = star.concat(" " + blankStar);
        }
        return star;
    }

Und benutze es so

button.setText (getIntToStar (4));

1

Der Standardwert wird mit android: rating im XML-Layout festgelegt.

1
Kevin Gaudin

Sie können eine Standardbewertung von fünf Sternen im XML-Layout hinzufügen

Android:rating="5"

Bearbeiten: 

<RatingBar
        Android:id="@+id/rb_vvm"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:layout_marginBottom="@dimen/space2"
        Android:layout_marginTop="@dimen/space1"
        style="@style/RatingBar"
        Android:numStars="5"
        Android:stepSize="1"
        Android:rating="5" />
1
Gaurav Shetty
<LinearLayout 
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" >

    <RatingBar
        Android:id="@+id/ruleRatingBar"
        Android:isIndicator="true"
        Android:numStars="5"
        Android:stepSize="0.5"
        style="?android:attr/ratingBarStyleSmall"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        />
</LinearLayout>
0
Muzikant

Eine andere Möglichkeit ist, dass Sie die Bewertung im Adapter der Listenansicht verwenden

View Android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)

Folgende Parameter sind erforderlich, damit alle Attribute ordnungsgemäß funktionieren:

  1. Setzen Sie dierootaufparent
  2. booleanattachToRootasfalse

Ex: convertView = inflater.inflate (R.layout.myId, parent, false);

0
Devrath

Ich fand heraus, dass RatingBar sich auf eine maximale Anzahl von Sternen erstreckte, weil es in einer Tabelle mit dem Attribut Android:stretchColumns = "*" enthalten war.

Nachdem ich stretchCoulumns von allen Spalten entfernt hatte, wurde RatingBar entsprechend dem Android:numStars-Wert angezeigt

0
Jon