如何设置评级栏的星形颜色?

时间:2013-08-02 03:08:59

标签: java android colors ratingbar

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

10 个答案:

答案 0 :(得分:13)

最简单的方法:

android:progressTint="@color/color"

光滑有光泽。

答案 1 :(得分:11)

这对我有用:

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

答案 2 :(得分:9)

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

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

希望这有助于我的情况。

答案 3 :(得分: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?

答案 4 :(得分: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>

告诉您的评级栏定义使用此drawable

<RatingBar android:progressDrawable="@drawable/ratingbarstars.xml"/>

答案 5 :(得分: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"/>

答案 6 :(得分:1)

在上述博客中有点复杂,我使用了类似但更简单的方法。你需要3星图像(red_star_full.png,red_star_half.png和red_star_empty.png)和一个xml,这就是全部。

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

添加以下ratingbar_red.xml:

var pattern = new RegExp("\\[\\[var[0-9]*\\]\\]")
if ($(this).text().match(pattern)) {
    var match = $(this).text().match(pattern);
    var num = match.toString().match(/[0-9]+/);  
    var tagged = '<span class="variable">VAR ' + num + '</span>';
    $(this).text($(this).text().replace(pattern, tagged));    
}

最后,告诉你的评级栏定义使用它,即

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

就是这样。

答案 7 :(得分:1)

尝试这个

RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar);
LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable();
stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP);

答案 8 :(得分: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及以上版本

答案 9 :(得分:0)

ERROR ITMS-90596: "Invalid Bundle. The asset catalog at 'Payload/Limon
chilli.app/Assets.car' can't be read. Try rebuilding the app with a non-beta 
version of Xcode and submit it again."

主题风格

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