19

如何设置评分栏的星形颜色?我想要黄色的星星。

4

10 回答 10

21

最简单的方法:

android:progressTint="@color/color"

光滑有光泽。

于 2015-12-26T13:16:35.110 回答
12

这对我有用:

    Drawable drawable = ratingBar.getProgressDrawable();
    drawable.setColorFilter(Color.parseColor("#FFFDEC00"), PorterDuff.Mode.SRC_ATOP);
于 2015-09-04T01:32:33.020 回答
12

我发现仅设置 progressTint 并不是一个完整的解决方案。如果您的 stepSize 小于 1,它将更改星形的颜色,但不会更改部分星形填充。根据我的经验,您还需要设置 secondaryProgressTint 以阻止默认的星形色调抬起丑陋的头部。这是我的代码:

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

希望这对我的情况有所帮助。

于 2016-02-14T00:03:03.077 回答
6

您是否尝试过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/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>

在你的 xml 中调用它

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

并使用你自己的drawables?

于 2013-08-02T03:16:08.257 回答
4

您确实需要 3 张星图(star_filled_show.png、star_half_show.png 和 star_empty_show.png)和一个 xml,仅此而已。

将这 3 张图片放入res/drawable.

放在那里ratingbarstars.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/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>

告诉您的评分栏定义使用此可绘制对象

<RatingBar android:progressDrawable="@drawable/ratingbarstars.xml"/>
于 2014-11-10T07:49:11.353 回答
2

评级栏在运行时自动用于更改触摸星的颜色。

首先在 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>

然后你的评分栏添加这样的主题:

<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"/>
于 2017-08-23T13:02:41.330 回答
1

上面提到的博客有点复杂,我使用了类似但更简单的方法。您确实需要 3 张星图(red_star_full.png、red_star_half.png 和 red_star_empty.png)和一个 xml,仅此而已。

将这 3 张图片放在 res/drawable 中。

将以下 ratingbar_red.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/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>

最后,告诉您的评分栏定义使用它,即

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

而已。

于 2015-05-14T03:59:22.323 回答
1

试试这个

RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar);
LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable();
stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP);
于 2015-09-01T05:03:01.007 回答
1

当我这样做时,我也必须设置 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"/>

仅适用于 api 版本 21 及更高版本

于 2017-01-24T11:51:32.560 回答
0
<RatingBar
        android:id="@+id/rating"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:theme="@style/RatingBar"/>

风格主题

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

于 2016-12-26T06:05:13.640 回答