我怎样才能设置评分栏的星星颜色?

我怎样才能设置评分栏的星星颜色? 我想要黄色的星星。

Solutions Collecting From Web of "我怎样才能设置评分栏的星星颜色?"

最简单的方法:

android:progressTint="@color/color" 

光滑有光泽。

这对我工作:

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

我发现只是设置progressTint不是一个完整的解决scheme。 如果你的stepSize小于1,它将会改变恒星的颜色,但是不会影响部分恒星的填充。在我的经​​验中,你还需要设置secondaryProgressTint来停止默认的星星色调来养育它的丑陋的头部。 这是我的代码:

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

希望这可以帮助有人在我的情况。

你有没有尝试过一个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?

你确实需要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"/> 

试试这个

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

当我做到这一点,我不得不把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及以上

在提到的博客里有点复杂,我用了一个类似但更简单的方法。 你确实需要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"/> 

而已。

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

在运行时自动使用评分栏来改变触摸星的颜色。

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