Android – La barre de classement personnalisée ressemble à son saignement

Donc, j'ai créé une barre de notation avec de nouvelles icônes, cependant, lorsque je l'implémente, les étoiles semblent qu'elles saignent, voir en annexe:

Barre d'évaluation

  • Erreur d'autorisation WRITE_SECURE_SETTINGS même lorsqu'elle est ajoutée dans Manifest
  • Contrôle des drapeaux du compilateur dans le NDK Android?
  • La notification du constructeur est obsolète
  • Android Stop Emulator de Command Line
  • Android Studio 2.2 aperçu 1 Erreur EditText
  • Pouvez-vous créer des applications React Native (application Android) sur Ubuntu?
  • Voici le style, l'évaluation xml, et comment ils sont implémentés dans la mise en page:

    style:

    <style name="GoldRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:indeterminateOnly">false</item> <item name="android:progressDrawable">@drawable/gold_ratingbar</item> <item name="android:indeterminateDrawable">@drawable/gold_ratingbar</item> <item name="android:thumb">@null</item> <item name="android:isIndicator">true</item> </style> 

    Évaluation xml:

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+android:id/background" android:drawable="@drawable/rating_star_icon_off" /> <item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/rating_star_icon_half" /> <item android:id="@+android:id/progress" android:drawable="@drawable/rating_star_icon" /> </layer-list> 

    Disposition:

     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:text="Overall rating" android:textSize="16sp" android:textStyle="bold" /> <RatingBar android:id="@+id/review_overall_rating" style="@style/GoldRatingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="6dp" android:layout_marginLeft="6dp" android:rating="3" /> <TextView android:id="@+id/review_rating_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:text="" android:textStyle="bold" /> 

    Quelqu'un peut-il voir où j'ai mal tourné?

  • Service Android et UI Thread
  • Android: Exécution du code uniquement lors de la première exécution et de chaque mise à jour ultérieure
  • Effets de couleur PorterDuff dans Android pour les vues sous une vue donnée
  • Recyclerview n'appelle aucune méthode d'adaptateur: onCreateViewHolder, onBindViewHolder,
  • Comment jouer sonnerie / sonnerie d'alarme dans Android
  • Android Comment déplacer une carte sous un marqueur
  • 3 Solutions collect form web for “Android – La barre de classement personnalisée ressemble à son saignement”

    J'avais le même problème.

    Dans mon cas, blank_star.png height est 17dp, alors je place android:layout_height="17dp" sur RatingBar et mon problème est résoudre. RatingBar le code ci-dessous: –

     <RatingBar android:id="@+id/rating" style="@style/rating_bar" android:layout_width="wrap_content" android:layout_height="17dp" android:layout_marginRight="5dp" android:isIndicator="true" android:numStars="5" android:stepSize="1.0" /> 

    Style / rating_bar.xml

     <style name="rating_bar" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/rating_bar_full</item> <item name="android:minHeight">18dip</item> <item name="android:maxHeight">18dip</item> </style> 

    Drawable / rating_bar_full

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+android:id/background" android:drawable="@drawable/ratingbar_full_empty"/> <item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/ratingbar_full_empty"/> <item android:id="@+android:id/progress" android:drawable="@drawable/ratingbar_full_filled"/> </layer-list> 

    Drawable / ratingbar_full_empty

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/blank_star" android:state_pressed="true" android:state_window_focused="true"/> <item android:drawable="@drawable/blank_star" android:state_focused="true" android:state_window_focused="true"/> <item android:drawable="@drawable/blank_star" android:state_selected="true" android:state_window_focused="true"/> <item android:drawable="@drawable/blank_star"/> </selector> 

    Drawable / ratingbar_full_filled.xml

     <item android:drawable="@drawable/filled_star" android:state_pressed="true" android:state_window_focused="true"/> <item android:drawable="@drawable/filled_star" android:state_focused="true" android:state_window_focused="true"/> <item android:drawable="@drawable/filled_star" android:state_selected="true" android:state_window_focused="true"/> <item android:drawable="@drawable/filled_star"/> 

    J'ai eu un cas similaire et la réponse acceptée ne le résoudra pas sur toutes les tailles d'écran, en fait, la solution est très simple, il suffit d'ajouter le rembourrage à l'image .png que vous utilisez "2 pixels transparents de chaque côté"

    Les occlusions saignantes parce que Android répète la dernière rangée de votre image d'étoile afin de simplement rendre cette ligne transparente

    Le saignement survient parce que la dernière rangée de votre image étoile est en cours de répétition. Vous pouvez résoudre ce problème en définissant la taille de la barre de classement pour correspondre parfaitement à l'amortisseur sous-jacent.

    The RatingBar ne contrôle jamais la taille du sous-jacent pouvant être dessiné. Donc, vous devez le faire vous-même. Il peut être difficile de le faire en utilisant xml, car vos actifs peuvent avoir différentes tailles pour différentes densités d'écran. De plus, vos utilisateurs UX peuvent modifier les actifs sans mettre à jour les dimensions xml.

    Solution: créez une barre de qualification qui vérifie la taille de ses drawables. Voir ci-dessous

     public class RatingBar extends android.widget.RatingBar { private Drawable starDrawable; public RatingBar(Context context) { this(context, null); } public RatingBar(Context context, AttributeSet attrs) { super(context, attrs); starDrawable = getResources().getDrawable( R.drawable.your_drawable, context.getTheme()); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // Make sure to account for padding and margin, if you care. // I only cared about left padding. setMeasuredDimension(starDrawable.getIntrinsicWidth() * 5 + getPaddingLeft(), starDrawable.getIntrinsicHeight()); } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.