Ich folge dem Standardbeispiel zum Hinzufügen eines RatingBar
. Um die Anzahl der Sterne zu kontrollieren, habe ich versucht, sie zu verwenden android:numStars="5"
. Das Problem ist, dass die Anzahl der Sterne überhaupt nichts zu bewirken scheint. Im Hochformat bekomme ich 6 Sterne und wenn ich das Telefon umlege, bekomme ich ungefähr 10 Sterne. Ich habe versucht, die Anzahl der Sterne in meiner Aktivität ( myBar.setNumStars(5)
) festzulegen, die die XML lädt, aber auch mit dieser Option war kein Erfolg.
Meine Frage ist also, wie ich mein Layout so definiere, dass es nur fünf Sterne zeigt. Set numStars
scheint nicht zu funktionieren.
Vielen Dank im Voraus, Roland
Die
RatingBar.setNumStar
Dokumentation sagt:Das Einstellen der Layoutbreite auf
wrap_content
sollte dieses Problem lösen.quelle
Dies hat bei mir funktioniert:
RatingBar
sollte sich in einemLinearLayout
anderen Bereich befinden als der Layoutbreite, für die der Inhalt umbrochen werden sollRatingBar
.quelle
Wenn Sie a festlegen
layout_weight
, wird dasnumStars
Attribut durch dieses ersetzt .quelle
Sie sollten nur
numStars="5"
in Ihrem XML verwenden und festlegenandroid:layout_width="wrap_content"
.Dann können Sie mit Stilen und anderen Dingen herumspielen, aber der "wrap_content" in layout_width ist der Trick.
quelle
Wenn Sie verwenden
android:layout_width="match_parent"
Verwenden Sie wrap_content und es werden nur die festgelegten numStars angezeigt :)
android:layout_width="wrap_content"
quelle
Konfigurieren Sie die Anzahl der Sterne in der XML-Datei ... Sie müssen sie nicht in Stilen oder Aktivität / Fragment angeben. WICHTIG: Stellen Sie sicher, dass Sie die BREITE eingeben, da Wrap-Inhalt und Gewichte nicht aktiviert sind
quelle
Ich stehe auch vor dem Problem, dass die Sterne überschritten werden, als die Anzahl der Sterne angegeben wurde. Aus diesem Grund möchten wir uns keine Gedanken über den relativen oder linearen Layouttyp machen. Verwenden Sie einfach die Breite wie folgt:
Bitte vermeiden Sie die Verwendung von match_parent und fill_parent für die Bewertungsleiste .
Hoffe die Dinge wären hilfreich.
quelle
Sogar ich hatte das Problem @Roland, ich hatte ein weiteres Attribut namens
in meiner
RatingBar
Deklaration in XML. Dieses Attribut verhinderte das Setzen der erforderlichen Sterne und das Einrichten derNumStars
Bleiben Sie über die Probleme auf dem Laufenden, auf die Sie stoßen!
quelle
Für mich hatte ich ein Problem, bis ich die Polsterung entfernte. Es sieht so aus, als ob es auf bestimmten Geräten einen Fehler gibt, der die Größe der Ansicht nicht ändert, um das Auffüllen zu berücksichtigen, und stattdessen den Inhalt komprimiert.
Entfernen
padding
,layout_margin
stattdessen verwenden.quelle
Verwenden Sie diesen Code, um eine einfache Sternebewertung in runder Zahl anzuzeigen
Und benutze es so
button.setText (getIntToStar (4));
quelle
Sie können neben dem XML-Layout eine Standardbewertung von fünf Sternen hinzufügen
Bearbeiten:
quelle
Wenn Sie das
RatingBar
Innere einesConstraintLayout
mitmatch_constraint
für seine Breite umbrechen, zeigt die Editor-Vorschau eine Anzahl von Sternen an, die proportional zu seiner tatsächlichen Breite sind, unabhängig davon, ob Sie dieandroid:numStars
Eigenschaft festlegen . Verwenden Siewrap_content
diese Option , um die richtige Vorschau zu erhalten:quelle
Der Standardwert wird mit andoid: Bewertung im XML-Layout festgelegt.
quelle
quelle
Ich fand, dass die
RatingBar
auf eine maximale Anzahl von Sternen gedehnt, weil es in einer Tabelle mit dem Attribut eingeschlossen warandroid:stretchColumns = "*"
.Sobald ich
stretchCoulumns
alle Spalten entfernt habe, wird dasRatingBar
entsprechend demandroid:numStars
Wert angezeigtquelle
Eine andere Möglichkeit ist, dass Sie die Bewertung im Adapter der Listenansicht verwenden
Die folgenden Parameter sind erforderlich, damit alle Attribute ordnungsgemäß funktionieren:
root
aufparent
attachToRoot
alsfalse
Beispiel: convertView = inflater.inflate (R.layout.myId, parent, false);
quelle
Die eigentliche Sache hier ist,
wrap_content
statt zu verwendenmatch_parent
. Wenn Siematch_parent
das Layout verwenden, wird es mit den Sternen gefüllt, auch wenn es mehr als die Variable numStars ist.quelle