J'ai déjà ajouté un style
<style name="myRatingBar" parent="@Android:style/Widget.RatingBar">
<item name="Android:minHeight">32dp</item>
<item name="Android:maxHeight">32dp</item>
</style>
Cependant, au lieu d'étoiles à l'échelle, je reçois des étoiles recadrées:
Y a-t-il un moyen de changer la taille des étoiles?
Android n'échelonnera pas les icônes de la barre de notation. Lorsque vous réduisez les minHeight
et maxHeight
, Android rognera toujours les icônes comme indiqué sur la photo. La solution de contournement pour cela et semble être la seule solution consiste à fournir vos propres icônes pour les étoiles ayant les dimensions souhaitées et à définir minHeight
et maxHeight
à la taille des icônes.
Une autre approche serait de redimensionner le widget:
Android:scaleX="0.5"
Android:scaleY="0.5"
Vous avez résolu votre problème. Mais cela peut aider les autres.
J'ai le même problème. Toutes les solutions que j'ai obtenues ne fonctionnent pas pour plusieurs tailles d'écran. Après avoir passé des heures, j'ai terminé avec la solution suivante.
Obtenez simplement la hauteur que vous souhaitez utiliser au moment de l’exécution et définissez-la sur RatingBar. Voici un exemple de code.
Drawable starDrawable = getResources().getDrawable(R.drawable.YOUR_IMAGE);
int height = starDrawable.getMinimumHeight();
LayoutParams params = (LayoutParams) ratingBar.getLayoutParams();
params.height = height;
ratingBar.setLayoutParams(params);
// tu peux aussi essayer
<style name="myRatingBar" parent="@Android:style/Widget.RatingBar.Indicator">
<style name="myRatingBar" parent="@Android:style/Widget.RatingBar.Small">
Ref: /Android-sdk/platforms/Android-10/data/res/values/styles.xml
<style name="Widget.RatingBar">
<item name="Android:indeterminateOnly">false</item>
<item name="Android:progressDrawable">@Android:drawable/ratingbar_full</item>
<item name="Android:indeterminateDrawable">@Android:drawable/ratingbar_full</item>
<item name="Android:minHeight">57dip</item>
<item name="Android:maxHeight">57dip</item>
<item name="Android:thumb">@null</item>
</style>
<style name="Widget.RatingBar.Indicator">
<item name="Android:indeterminateOnly">false</item>
<item name="Android:progressDrawable">@Android:drawable/ratingbar</item>
<item name="Android:indeterminateDrawable">@Android:drawable/ratingbar</item>
<item name="Android:minHeight">38dip</item>
<item name="Android:maxHeight">38dip</item>
<item name="Android:thumb">@null</item>
<item name="Android:isIndicator">true</item>
</style>
<style name="Widget.RatingBar.Small">
<item name="Android:indeterminateOnly">false</item>
<item name="Android:progressDrawable">@Android:drawable/ratingbar_small</item>
<item name="Android:indeterminateDrawable">@Android:drawable/ratingbar_small</item>
<item name="Android:minHeight">14dip</item>
<item name="Android:maxHeight">14dip</item>
<item name="Android:thumb">@null</item>
<item name="Android:isIndicator">true</item>
</style>
Regardez ceci Barre de classement personnalisée dans un style réduit.
Je pense que vous devez utiliser le style personnalisé pour la barre d’évaluation. Ici est l'exemple.
<RatingBar
Android:id="@+id/AVL_rating"
style="?android:attr/ratingBarStyleSmall"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_below="@+id/ASD_cardlayout"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
Android:layout_marginTop="@dimen/_10sdp"
Android:isIndicator="true"
Android:numStars="5"
Android:rating="5.0"
Android:secondaryProgressTint="@color/clr_red"
Android:stepSize="1.0" />