Comment faire de RatingBar pour montrer cinq écanvass

Je suis l’exemple standard de la façon d’append un RatingBar . Pour contrôler le nombre d’écanvass, j’ai essayé d’utiliser android:numStars="5" . Le problème est que le nombre d’écanvass ne semble rien faire du tout. En portrait, j’ai 6 écanvass et quand je retourne le téléphone, je reçois environ 10 écanvass. J’ai essayé de définir le nombre d’écanvass dans mon activité ( myBar.setNumStars(5) ) qui charge le myBar.setNumStars(5) 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 ne montre que cinq écanvass. Set numStars ne semble pas fonctionner.

Merci d’avance, Roland

  

dans du code

 mRatingBar.setRating(int) 

La documentation RatingBar.setNumStar dit:

Définit le nombre d’écanvass à afficher. Pour que ceux-ci soient affichés correctement, il est recommandé que la largeur de mise en page de ce widget soit un contenu d’emballage.

Donc, définir la largeur de la présentation sur wrap_content devrait résoudre ce problème.

Cela a fonctionné pour moi: RatingBar devrait être dans LinearLayout autre que d’avoir la largeur de présentation définie pour envelopper le contenu pour RatingBar .

De plus, si vous définissez un layout_weight , cela remplace l’atsortingbut numStars .

  

Configurez le nombre d’écanvass dans le fichier XML … Inutile de le fournir dans les styles ou les activités / fragments …. IMPORTANT: assurez-vous de mettre le WIDTH en tant que contenu Wrap et que les poids ne sont pas activés

Je suis également confronté au problème qui dépasse les écanvass que spécifié pas d’écanvass. Pour cela, nous ne voulons pas nous inquiéter du format de la mise en page, relatif ou linéaire. Utilisez simplement la largeur comme suit:

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

Veuillez éviter d’ utiliser match_parent et fill_parent pour la barre d’ évaluation .
J’espère que les choses seraient utiles.

Même si j’étais confronté au problème @Roland, j’avais inclus un autre atsortingbut appelé

 android:layout_alignParentRight="true" 

dans ma déclaration RatingBar en XML. Cet atsortingbut NumStars permis de définir les écanvass requirejses et de configurer les NumStars

Restez au courant des problèmes que vous rencontrez!

Pour moi, j’ai eu un problème jusqu’à ce que je retire le rembourrage. Il semble qu’il y ait un bogue sur certains périphériques qui ne modifie pas la taille de la vue pour accommoder le remplissage, et compresse le contenu.

Supprimez le padding , utilisez plutôt layout_margin .

Si vous utilisez

android:layout_width="match_parent"

Utilisez wrap_content et il affichera uniquement le numStars 🙂

android:layout_width="wrap_content"

La valeur par défaut est définie avec andoid: rating dans la présentation XML.

Pour afficher un nombre d’écanvass simple dans la figure ronde, utilisez simplement ce code

 public static Ssortingng getIntToStar(int starCount) { Ssortingng fillStar = "\u2605"; Ssortingng blankStar = "\u2606"; Ssortingng 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; } 

Et l’utiliser comme ça

button.setText (getIntToStar (4));

Vous pouvez append un classement par défaut de cinq écanvass dans la présentation XML

 android:rating="5" 

Modifier:

  

Vous devez simplement utiliser numStars="5" dans votre XML et définir android: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.

    

J’ai constaté que le RatingBar s’étendait à un nombre maximum d’écanvass car il était entouré d’un tableau avec l’atsortingbut android:stretchColumns = "*" .

Une fois que j’ai pris stretchCoulumns de toutes les colonnes, la RatingBar affichée en fonction de l’ android:numStars valeur android:numStars

Une autre possibilité est que vous utilisez la notation dans l’adaptateur de la vue liste

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

Les parameters ci-dessous sont nécessaires pour que tous les atsortingbuts fonctionnent correctement:

  1. Définir la root au parent
  2. boolean attachToRoot comme false

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