Dans mon activité, j'ai quelques barres d'évaluation. Mais la taille de cette barre est si grande! Comment puis-je la réduire?
Modifier
Merci à Gabriel Negut, .__ Je l’ai fait avec le style suivant:
<RatingBar
style = "?android:attr/ratingBarStyleSmall"
Android:numStars = "5"
Android:rating = "4" />
Maintenant, la taille est réduite mais le nombre d'étoiles et le classement n'entrent pas en vigueur !!! Pourquoi? J'ai 7 étoiles que 6 d'entre elles sont sélectionnées.
Le lien original que j'ai posté est maintenant brisé (il y a une bonne raison pour laquelle publier uniquement des liens n'est pas la meilleure solution). Vous devez attribuer un style à la RatingBar
avec soit ratingBarStyleSmall
, soit un style personnalisé héritant de Widget.Material.RatingBar.Small
(en supposant que vous utilisez Material Design dans votre application).
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"
... />
Si vous souhaitez afficher la barre d’évaluation en petite taille, copiez et collez ce code dans votre projet.
<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" />
C’était ma solution après avoir beaucoup lutté pour réduire la barre d’évaluation en petite taille sans un rembourrage moche
<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" />
Vous pouvez le définir dans le code XML pour RatingBar
, utiliser scaleX
et scaleY
pour ajuster en conséquence. "1.0" correspond à la taille normale, et tout ce qui se trouve dans ".0" la réduira, ainsi que toute valeur supérieure à "1.0" l'augmentera.
<RatingBar
Android:id="@+id/ratingBar1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:scaleX="0.5"
Android:scaleY="0.5" />
L'extrait ci-dessous m'a permis de redimensionner le ratingBar.
<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"/>
<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" />
et ajoutez ceci dans votre fichier XML de styles
<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>
De cette façon, vous n’avez pas besoin de personnaliser ratingBar.
<RatingBar
style="?android:attr/ratingBarStyleIndicator"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
/>
Vérifiez ma réponse ici . Le meilleur moyen d'y parvenir.
<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>
et utiliser comme
<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" />
Si vous utilisez Barre d'évaluation dans Linearlayout avec weightSum. Assurez-vous de ne pas attribuer le poids de layout_weight pour la barre d'évaluation. Au lieu de cela, placez la barre de classement dans la disposition relative et donnez du poids à la disposition relative. Faire le contenu de la largeur de la barre de classement.
<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>
En utilisant Widget.AppCompat.RatingBar
, vous avez 2 styles à utiliser; Indicator
et Small
pour les grandes et les petites tailles, respectivement. Voir exemple ci-dessous.
<RatingBar
Android:id="@+id/rating_star_value"
style="@style/Widget.AppCompat.RatingBar.Small"
... />
Si vous n'avez besoin que du style par défaut, assurez-vous que vous avez la largeur/hauteur suivante, sinon les numStars pourraient être gâchés:
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Dans RatingBar
donne l'attribut:
style="?android:attr/ratingBarStyleIndicator"
Pour ceux qui ont créé la barre d’évaluation par programme et qui veulent définir une petite barre d’évaluation au lieu de la grande barre d’évaluation par défaut
private LinearLayout generateRatingView (valeur flottante) { LinearLayout linearLayoutRating = new LinearLayout (getContext ()); linearLayoutRating.setLayoutParams (nouveau TableRow.LayoutParams (TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); ;__. linearLayoutRating.setGravity (Gravity.CENTER); RatingBar ratingBar = nouveau RatingBar (getContext (), null, Android.R.attr.ratingBarStyleSmall); ratingBar.setEnabled (false); ratingBar.setStepSize (Float.parseFloat ("0.5")); // pour activer la demi-étoile ratingBar.setNumStars (5); ratingBar.setRating (value); linearLayoutRating.addView (ratingBar); return linearLayoutRating; }