android – 在RatingBar上调用getProgressDrawable()只显示一个星号

我的应用程序中有一个自定义ratingBar,如果用户对其进行评级,则应显示网站平均评分或电影的用户评级.颜色应根据显示的评级是网站平均值还是用户评级而改变.

这是过程:
用户观看电影.显示电影的网站平均评分.

ratingBar的布局代码

<ratingBar android:id="@+id/ratingBar" android:isIndicator="true" 
    android:layout_margin="10dip" style="@style/ratingBar"
    android:progressDrawable="@drawable/site_rating_bar" android:stepSize="0.1" />

ratingBar风格:

<style name="ratingBar" parent="@android:style/Widget.ratingBar">
    <item name="android:numStars">10</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:minHeight">30dip</item>
    <item name="android:maxHeight">30dip</item>
</style>

site_rating_bar.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@+android:id/background"
      android:drawable="@drawable/btn_rating_star_off" />
   <item android:id="@+android:id/secondaryProgress"
      android:drawable="@drawable/btn_rating_star_off" />
   <item android:id="@+android:id/progress"
      android:drawable="@drawable/btn_site_rating_star_on" />
</layer-list>

用户可以点击ratingBar并打开一个对话框,在那里他们可以添加自己的电影自定义评级.关闭对话框后,代码将更新上面ratingBar中显示的评级.我还想更改ProgressDrawable,以便星星的颜色发生变化,表明用户添加自定义评级.

但是当我尝试以编程方式设置ProgressDrawable时它会更新它以便显示正确的颜色,但它只显示一个横跨屏幕的星形.

ratingBar.setProgressDrawable(thisActivity.getResources().getDrawable(R.drawable.user_rating_bar));

user_rating_bar.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+android:id/background"
      android:drawable="@drawable/btn_rating_star_off" />
    <item android:id="@+android:id/secondaryProgress"
      android:drawable="@drawable/btn_rating_star_off" />
    <item android:id="@+android:id/progress"
      android:drawable="@drawable/btn_user_rating_star_on" />
</layer-list>

我已经尝试保存原始边界并重置它们,但它没有帮助:

Rect bounds = ratingBar.getProgressDrawable().getBounds();  
ratingBar.setProgressDrawable(thisActivity.getResources().getDrawable(R.drawable.user_rating_bar));
ratingBar.getProgressDrawable().setBounds(bounds);

还尝试重置numStars以防它丢失.

任何想法都非常感激. TIA.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...