RatingBar 的星色取决于星数

RatingBar with star color depending on number of stars

使用 Android RatingBar,我希望评分星星具有以下颜色(每个评分的所有星星颜色相同):

这是我的代码:

RatingBar rateDoctor;

rateDoctor = (RatingBar)findViewById(R.id.rateDoctor);

rateDoctor.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
    @Override
    public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {


    }
});

还有我的XML:

<RatingBar android:id="@+id/rateDoctor" android:layout_marginTop="15dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:stepSize="1.0" />

试试这个

if(ratingbar.getRating()<=1)
{
LayerDrawable stars = (LayerDrawable) ratingBar
                .getProgressDrawable();
        stars.getDrawable(2).setColorFilter(getResources().getColor(R.color.red),
                PorterDuff.Mode.SRC_ATOP); // for filled stars
        stars.getDrawable(1).setColorFilter(getResources().getColor(R.color.hal_selected),
                PorterDuff.Mode.SRC_ATOP); // for half filled stars
        stars.getDrawable(0).setColorFilter(getResources().getColor(R.color.no_selected),
                PorterDuff.Mode.SRC_ATOP);
}

参考资料: How to create Custom Ratings bar in Android

 <RatingBar
    android:id="@+id/ratingBar2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="20dp"
    android:progressDrawable="@drawable/custom_ratingbar_selector"
    android:numStars="8"
    android:stepSize="0.2"
    android:rating="3.0" />