Je suis l'exemple standard de la façon d'ajouter un fichier RatingBar
. Pour contrôler le nombre d'étoiles que j'ai essayé d'utiliser android:numStars="5"
. Le problème est que le nombre d'étoiles ne semble rien faire du tout. En mode portrait, j'obtiens 6 étoiles et lorsque je retourne le téléphone, j'obtiens environ 10 étoiles. J'ai essayé de définir le nombre d'étoiles dans mon Activity ( myBar.setNumStars(5)
) qui charge le xml, mais cette option n'a pas non plus réussi.
Ma question est donc de savoir comment définir ma mise en page pour qu'elle n'affiche que cinq étoiles? L'ensemble numStars
ne semble pas fonctionner.
Merci d'avance, Roland
La
RatingBar.setNumStar
documentation dit:Donc, définir la largeur de la mise en page sur
wrap_content
devrait résoudre ce problème.la source
Cela a fonctionné pour moi:
RatingBar
devrait être à l'intérieurLinearLayout
autre que la largeur de mise en page définie pour envelopper le contenuRatingBar
.la source
De plus, si vous définissez a
layout_weight
, cela remplace l'numStars
attribut.la source
Vous devez simplement utiliser
numStars="5"
dans votre XML et définirandroid:layout_width="wrap_content"
.Ensuite, vous pouvez jouer avec les styles et autres choses, mais le "wrap_content" dans layout_width est ce qui fait l'affaire.
la source
Si vous utilisez
android:layout_width="match_parent"
Utilisez wrap_content et il n'affichera que l'ensemble numStars :)
android:layout_width="wrap_content"
la source
Configurez le nombre d'étoiles dans le fichier XML ... Pas besoin de le fournir dans Styles ou Activity / Fragment .... IMPORTANT: assurez-vous de mettre la LARGEUR comme contenu Wrap et les poids ne sont pas activés
la source
Je suis également confronté au problème qui dépasse le nombre d'étoiles spécifié. Pour cela, nous ne voulons pas nous soucier du type de mise en page, qu'elle soit relative ou linéaire. Utilisez simplement la largeur comme suit:
Veuillez éviter d' utiliser match_parent et fill_parent pour la barre de notation .
J'espère que les choses seraient utiles.
la source
Même si j'étais confronté au problème @Roland, j'avais inclus un autre attribut appelé
dans ma
RatingBar
déclaration en XML. Cet attribut empêchait de fixer les étoiles requises et de configurer leNumStars
Restez au courant des problèmes que vous rencontrez!
la source
Pour moi, j'ai eu un problème jusqu'à ce que j'enlève le rembourrage. Il semble qu'il y ait un bogue sur certains appareils qui ne modifie pas la taille de la vue pour accueillir le remplissage, mais compresse plutôt le contenu.
Supprimer
padding
, utiliser à lalayout_margin
place.la source
Pour afficher un classement par étoiles simple en chiffre rond, utilisez simplement ce code
Et utilisez-le comme ça
button.setText (getIntToStar (4));
la source
Vous pouvez ajouter une note par défaut de cinq étoiles à côté de la mise en page XML
Éditer:
la source
Si vous enveloppez l'
RatingBar
intérieur d'unConstraintLayout
avecmatch_constraint
pour sa largeur, l'aperçu de l'éditeur affichera un nombre d'étoiles proportionnel à sa largeur réelle, peu importe si vous définissez laandroid:numStars
propriété. Utilisezwrap_content
pour obtenir l'aperçu correct:la source
La valeur par défaut est définie avec andoid: rating dans la mise en page xml.
la source
la source
J'ai trouvé que l'
RatingBar
étirait à un nombre maximum d'étoiles car il était inclus dans un tableau avec l'attributandroid:stretchColumns = "*"
.Une fois que j'ai
stretchCoulumns
enlevé toutes les colonnes, leRatingBar
affiché en fonction de laandroid:numStars
valeurla source
Une autre possibilité est que vous utilisez le classement dans l'adaptateur de la vue liste
Les paramètres ci-dessous sont nécessaires pour que tous les attributs fonctionnent correctement:
root
surparent
attachToRoot
commefalse
Ex: convertView = inflater.inflate (R.layout.myId, parent, false);
la source
La chose réelle ici est d'utiliser
wrap_content
au lieu dematch_parent
. Si vous utilisez,match_parent
la mise en page sera remplie d'étoiles même si elle est supérieure à la variable numStars .la source