概述:
RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星形来显示等级评定!在项目中使用概率是很大的,但是系统默认的样式真的不敢恭维,虽然5.0后的效
果好了很多,但是对于低版本还是存在问题。
这个时候就需要去自定RatingBar的样式:
首先需要准备三张图,实心、空心、一半空一半实的心
<?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="@mipmap/star_off" />
<item android:id="@android:id/secondaryProgress"
android:drawable="@mipmap/star_half" />
<item android:id="@android:id/progress"
android:drawable="@mipmap/star_on" />
</layer-list>
Background:是用来背景图片,和进度条类似,当我们设置最高评分时,系统根据设置的numStars绘制出星星。
Progress:是用来在背景图片基础上进行填充的指示属性
Secondaryprogress:同progress一样属于第二进度位置。
Style.xml
<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/drawable_ratingbar</item>
<item name="android:minHeight">14dp</item>
<item name="android:maxHeight">14dp</item>
</style>
提取样式到style中,方便复用。
Xml布局文件:
<RatingBar
android:id="@+id/rating_bar"
style="@style/roomRatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/tv_teacher_name"
android:layout_marginRight="28px"
android:layout_marginTop="8px"
android:isIndicator="true"
android:numStars="5"
android:rating="2.5" />
相关参数:
android:isIndicator RatingBar是否是一个指示器(用户无法进行更改)
android:numStars 显示的星型数量,必须是一个整形值,像“100”。
android:rating 默认的评分,必须是浮点类型,像“1.2”。
android:stepSize 评分的步长,必须是浮点类型,像“1.2”。
这样就完成了Ratingbar的自定义样式。