RatingBar的自定义效果
有时候android系统提供给我们的ratingbar效果并不达到我们的要求,这个时候就可以自定义自己喜欢的ratingbar。
从上面的效果可以看出,自定义这样的组件,需要两张图片: 。一张用来未选择的效果,一张用来显示的效果。那还要中间那种一半是未选择一半时选择的呢?其实当你写好这样的组件后,系统就会自动帮你自动解析生成那种效果。
从上面的效果可以看出,自定义这样的组件,需要两张图片: 。一张用来未选择的效果,一张用来显示的效果。那还要中间那种一半是未选择一半时选择的呢?其实当你写好这样的组件后,系统就会自动帮你自动解析生成那种效果。
来看一下代码:
- <RatingBar
- style="@style/foodRatingBar"
- Android:stepSize="1.0" 步长
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:rating="3" 默认选中的星数量
- android:id="@+id/ratingbarId">
- </RatingBar>
调用样式更换评分图片:
1:在res/drawable-hdpi下建立一个star_rating_bar_full.xml文件
- <?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/star_ratingbar_empty"
- android:layout_height="wrap_content" />
- <!-- 没选中状态 -->
- <item android:id="@+android:id/secondaryProgress"
- android:drawable="@drawable/star_ratingbar_empty" android:layout_height="wrap_content" />
- <!-- 选中状态 -->
- <item android:id="@+android:id/progress"
- android:drawable="@drawable/star_ratingbar_full" android:layout_height="wrap_content" />
- </layer-list>
2:在res/values下建立style.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
<!--指向star_rating_bar_full.xml文件 -->
<item name="android:progressDrawable">@drawable/star_rating_bar_full</item>
<item name="android:minHeight">15dip</item>
<item name="android:maxHeight">15dip</item>
<!-- 是否不支持用户交互,只应作为指标。 -->
<item name="android:isIndicator">true</item>
</style>
</resources>
这里就是定义组件的背景图片、一级进度背景图片和二级进度背景图片(里面这些id都是系统的id,当系统运行到这里时会自动根据这个id去重画组件)讲到这里大概明白怎么用了。其实很多组件都可以通过这样的方法来使用,但如果明白整个过程,那以后做起其他来都至少有一点得心应手的感觉吧。