Comment puis-je définir la couleur étoile de la barre de notation? Je veux des étoiles jaunes.
Le moyen le plus simple:
Android:progressTint="@color/color"
Lisse et brillant.
Cela a fonctionné pour moi:
Drawable drawable = ratingBar.getProgressDrawable();
drawable.setColorFilter(Color.parseColor("#FFFDEC00"), PorterDuff.Mode.SRC_ATOP);
J'ai constaté que le réglage de progressTint n'était pas une solution complète. Cela changera la couleur de l'étoile mais pas sur les remplissages partiels si votre stepSize est inférieur à 1. Dans mon expérience, vous devez également définir le secondaryProgressTint afin d'empêcher la teinte par défaut de l'étoile d'élever sa tête laide. Voici mon code:
Android:progressTint="@color/accent"
Android:secondaryProgressTint="@Android:color/transparent"
J'espère que cela aide quelqu'un dans ma situation.
Avez-vous essayé un thème XML, tel que
<?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/star_empty_show"/>
<item
Android:id="@Android:id/secondaryProgress"
Android:drawable="@drawable/star_empty_show"/>
<item
Android:id="@Android:id/progress"
Android:drawable="@drawable/star_filled_show"/>
</layer-list>
en l'appelant dans votre XML comme
<RatingBar
Android:id="@id/rate"
style="?android:attr/ratingBarStyleSmall"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginRight="5.0dip"
Android:isIndicator="true"
Android:max="5"
Android:numStars="5"
Android:progressDrawable="@drawable/ratebar_theme"
Android:stepSize="0.1" />
et en utilisant vos propres drawables?
Vous avez besoin d'images 3 étoiles (star_filled_show.png, star_half_show.png et star_empty_show.png) et d'un xml, c'est tout.
Mettez ces 3 images dans res/drawable
.
Mettez-y le ratingbarstars.xml
suivant:
<?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/star_empty_show"/>
<item
Android:id="@Android:id/secondaryProgress"
Android:drawable="@drawable/star_half_show"/>
<item
Android:id="@Android:id/progress"
Android:drawable="@drawable/star_filled_show"/>
</layer-list>
Dites à votre définition de ratingbar d'utiliser ce drawable
<RatingBar Android:progressDrawable="@drawable/ratingbarstars.xml"/>
La barre d’évaluation est utilisée automatiquement au moment de l’exécution pour changer de couleur sur l’étoile tactile.
Commencez par ajouter le style dans le fichier app\src\main\res\values \ styles.xml:
<style name="RatingBar" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/duskYellow</item>
<item name="colorControlActivated">@color/lightGrey</item></style>
Ensuite, votre barre de notation ajoute un thème comme celui-ci:
<RatingBar
Android:id="@+id/rating"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:numStars="5"
Android:stepSize="1"
Android:theme="@style/RatingBar"/>
C'est un peu compliqué sur le blog mentionné, j'ai utilisé un moyen similaire mais plus simple. Vous avez besoin d'images 3 étoiles (red_star_full.png, red_star_half.png et red_star_empty.png) et d'un xml, c'est tout.
Mettez ces 3 images à res/drawable.
Mettez-y le ratingbar_red.xml suivant:
<?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/red_star_empty" />
<item Android:id="@Android:id/secondaryProgress" Android:drawable="@drawable/red_star_half" />
<item Android:id="@Android:id/progress" Android:drawable="@drawable/red_star_full" />
</layer-list>
et, enfin, indiquez à votre définition de la barre d’évaluation de l’utiliser, c.-à-d.
<RatingBar Android:progressDrawable="@drawable/ratingbar_red"/>
C'est tout.
essaye celui-là
RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar);
LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable();
stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP);
Quand je l'ai fait, je devais aussi mettre le TintMode.
<RatingBar
Android:progressTint="@color/colorAccent"
Android:progressTintMode="src_atop" ---- This is important!
Android:secondaryProgressTint="@color/colorPrimary"
Android:secondaryProgressTintMode="src_atop" ---- This is important!
Android:progressBackgroundTint="@color/black_alpha"/>
seulement pour api version 21 et supérieure
<RatingBar
Android:id="@+id/rating"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:theme="@style/RatingBar"/>
avec thème dans les styles
<style name="RatingBar" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/gray</item>
<item name="colorControlActivated">@color/yellow</item>