webentwicklung-frage-antwort-db.com.de

Wie kann ich die Sternfarbe der Bewertungsleiste einstellen?

Wie kann ich die Sternfarbe der Bewertungsleiste einstellen? Ich will gelbe Sterne.

15
Finn Su

Der einfachste Weg: 

Android:progressTint="@color/color"

Glatt und glänzend.

13
MiguelCatalan

Das hat für mich funktioniert:

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

Ich habe festgestellt, dass das Einstellen des progressTint keine vollständige Lösung ist. Es ändert die Farbe des Sterns, aber nicht bei partiellen Sternfüllungen, wenn Ihre Schrittgröße kleiner als 1 ist. Meiner Erfahrung nach müssen Sie auch den sekundären ProgressTint einstellen, um zu verhindern, dass der Standard-Sternton seinen unschönen Kopf aufrichtet. Hier ist mein Code:

Android:progressTint="@color/accent"
Android:secondaryProgressTint="@Android:color/transparent"

Hoffe das hilft jemandem in meiner Situation.

9
Franklin Kesler

Haben Sie ein XML-Theme ausprobiert, wie zB

<?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>

nenne es in deiner xml als

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

und mit eigenen Drawables?

6
kwishnu

Sie benötigen 3 Sternbilder (star_filled_show.png, star_half_show.png und star_empty_show.png) und eine XML-Datei.

Setze diese 3 Bilder in res/drawable.

Fügen Sie dort den folgenden ratingbarstars.xml ein:

<?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>

Sagen Sie Ihrer Ratingbar-Definition, dass Sie dieses Zeichen verwenden darf

<RatingBar Android:progressDrawable="@drawable/ratingbarstars.xml"/>
4
OrchTech

Die Bewertungsleiste wird zur Laufzeit automatisch verwendet, um die Farbe des Berührungssterns zu ändern.

Fügen Sie zunächst den Stil in der Datei app\src\main\res\values ​​\ styles.xml hinzu:

<style name="RatingBar" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/duskYellow</item>
<item name="colorControlActivated">@color/lightGrey</item></style>

Dann fügen Sie Ihrer Bewertungsleiste ein Thema hinzu:

<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

Es ist ein wenig kompliziert in dem erwähnten Blog, ich habe einen ähnlichen, aber einfacheren Weg verwendet. Sie benötigen 3 Sterne-Bilder (red_star_full.png, red_star_half.png und red_star_empty.png) und eine XML-Datei.

Stellen Sie diese 3 Bilder auf res/drawable.

Fügen Sie dort die folgende ratingbar_red.xml ein:

<?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>

und schließlich sagen Sie Ihrer ratingbar-Definition, dies zu verwenden, d. h.

<RatingBar Android:progressDrawable="@drawable/ratingbar_red"/>

Das ist es.

1
Suneel Kumar

probier diese

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

Als ich es tat, musste ich auch den TintMode einstellen.

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

nur für API-Version 21 und höher

1
<RatingBar
        Android:id="@+id/rating"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:theme="@style/RatingBar"/>

mit Thema in Stilen

<style name="RatingBar" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/gray</item>
<item name="colorControlActivated">@color/yellow</item>

0
Tony Augustine