web-dev-qa-db-fra.com

Comment définir la taille personnalisée des étoiles dans RatingBar

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:

enter image description here

Y a-t-il un moyen de changer la taille des étoiles?

18
Marcin S.

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.

17
Marcin S.

Une autre approche serait de redimensionner le widget:

Android:scaleX="0.5"
Android:scaleY="0.5"
26
xleon

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);
5
Ketan Ahir

// 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>
5
Padma Kumar

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.

2
Chirag
             <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" />
0
Mohan Kumar