web-dev-qa-db-fra.com

Comment puis-je définir la couleur étoile de la barre de notation?

Comment puis-je définir la couleur étoile de la barre de notation? Je veux des étoiles jaunes.

15
Finn Su

Le moyen le plus simple: 

Android:progressTint="@color/color"

Lisse et brillant.

13
MiguelCatalan

Cela a fonctionné pour moi:

    Drawable drawable = ratingBar.getProgressDrawable();
    drawable.setColorFilter(Color.parseColor("#FFFDEC00"), PorterDuff.Mode.SRC_ATOP);
11
Chad Bingham

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.

9
Franklin Kesler

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?

6
kwishnu

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"/>
4
OrchTech

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"/>
2
Navadip Patel

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.

1
Suneel Kumar

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);
1
Anand Savjani

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

1
Marina Tello Colado
<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>

0
Tony Augustine