如何更改RatingBar的星级图片?

29
使用 Android SDK 1.1 r1 版本,有没有办法用自己的图像替换 RatingBar 控件类中的星级图片?是否可能实现?如果是,那么如何实现?谢谢。
2个回答

57

不确定1.1版本是否适用,但使用1.6及更高版本,可以扩展Widget.RatingBar样式并覆盖负责绘制星形图标的属性(在values/styles.xml中):

 <style name="myRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/my_ratingbar_full</item>
        <item name="android:indeterminateDrawable">@drawable/my_ratingbar_full</item>
 </style>

不需要子类化RatingBar,只需使用“style”属性将此样式传递给它即可:

<RatingBar style="@style/myRatingBar" ... /> 

下载Android源代码并查看核心drawable文件夹中的ratingbar_full.xml,以了解应将什么放入my_ratingbar_full

您可以在此处找到更完整的版本:如何在Android中创建自定义评级栏


能否通过编程来改变它? - Bagusflyer
1
如果您正在以编程方式创建RatingBar,则可以将样式作为其构造函数的最后一个参数传递,即RatingBar(Context context,AttributeSet attrs,int defStyle)。 - kozyr

10
简短回答是,在技术上看来是可行的。最简单的方法是基于RatingBar源代码创建自己的RatingBar(更优雅的方法是将原始RatingBar扩展为自己的)。从那里开始,您还需要创建自己的RatingBar样式,使用原始RatingBar源xml作为示例(或继承并扩展原始RatingBar样式)。
源代码可在developer.android.com上使用git获取。
我怀疑创建自己的评分栏是不被鼓励的,因为它违反了操作系统的一致外观和感觉。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接