Android 以编程方式设置比率栏选择器

Android 以编程方式设置比率栏选择器,android,android-custom-view,ratingbar,Android,Android Custom View,Ratingbar,在我的自定义Ratingbar类中,我希望以编程方式设置其选择器 这将起作用并更改颜色状态 LayerDrawable stars = (LayerDrawable) getProgressDrawable(); stars.getDrawable(2).setColorFilter(Color.parseColor("#62CFDE"), PorterDuff.Mode.SRC_ATOP); // for filled stars stars.getD

在我的自定义Ratingbar类中,我希望以编程方式设置其选择器

这将起作用并更改颜色状态

 LayerDrawable stars = (LayerDrawable) getProgressDrawable();
    stars.getDrawable(2).setColorFilter(Color.parseColor("#62CFDE"),
            PorterDuff.Mode.SRC_ATOP); // for filled stars
    stars.getDrawable(1).setColorFilter(Color.parseColor("#FFFFFF"),
            PorterDuff.Mode.SRC_ATOP); // for half filled stars
    stars.getDrawable(0).setColorFilter(Color.parseColor("#62CFDE"),
            PorterDuff.Mode.SRC_ATOP); // for empty stars
但我想在选择器中设置图像,但此代码不起作用

 StateListDrawable states = new StateListDrawable();
    states.addState(new int[]{android.R.attr.progressDrawable}, selectedImage);
    states.addState(new int[]{android.R.attr.progress}, selectedImage);
    states.addState(new int[]{android.R.attr.secondaryProgress}, backgroundImage);
    states.addState(new int[]{android.R.attr.background}, backgroundImage);
    setBackground(states);

请建议我如何以编程方式设置分级栏的选择器

最后,为了实现这一点,我做了以下工作

添加了一个LayerlistXML,这里我给出了所有三个州的临时图像

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

<item android:id="@android:id/secondaryProgress"
    android:drawable="@drawable/blue_rect" />

<item android:id="@android:id/progress"
    android:drawable="@drawable/blue_rect" />

最后,为了实现这一点,我做了以下工作

添加了一个LayerlistXML,这里我给出了所有三个州的临时图像

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

<item android:id="@android:id/secondaryProgress"
    android:drawable="@drawable/blue_rect" />

<item android:id="@android:id/progress"
    android:drawable="@drawable/blue_rect" />

您是否尝试了ratingBar.setProgressDrawable(状态)@大卫劳卡:是的,但它不起作用。你试过ratingBar.setProgressDrawable(states)@大卫劳卡:是的,但它不起作用