微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐