简介
RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星形来显示等级评定,在使用默认RatingBar时,用户可以通过触摸/拖动/按键来设置评分, RatingBar自带有两种模式 ,一个小风格 ratingBarStyleSmall,大风格为ratingBarStyleIndicator,大的只适合做指示,不适用与用户交互
第一种风格ratingBarStyleSmall
<RatingBar
android:id="@+id/ratingbar1"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
第二种风格ratingBarStyleIndicator
<RatingBar
android:id="@+id/ratingbar2"
style="?android:attr/ratingBarStyleIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
属性
属性名称 | 描述 |
---|---|
Android:isIndicator | RatingBar是否是一个指示器(用户无法进行更改) |
android:numStars | 显示的星型数量,必须是一个整形值,像“100” |
android:rating | 默认的评分,必须是浮点类型,像“1.2” |
android:stepSize | 评分的步长,必须是浮点类型,像“1.2” |
方法
public int getNumStars()
返回显示星星总共的的数目
public float getRating()
获取当前等级(满星星的数目)
public float getStepSize()
得到RatingBar的步长
public boolean isIndicator()
返回这RatingBar是否只是一个指示器(只是起指示作用,用户无法进行交互)
public synchronized void setMax(int max)
设置这个进度条的范围为0……max
public void setNumStars(int numStars)
设置星星的数目
public void setRating(float rating)
设置等级(星星的填充数目)
public void setStepSize(float stepSize)
设置RatingBar的步长
自定义RatingBar
drawable文件
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认状态 -->
<item
android:id="@android:id/background"
android:drawable="@mipmap/btn_collect_normal">
</item>
<!-- 没选中状态 -->
<item
android:id="@android:id/secondaryProgress"
android:drawable="@mipmap/btn_collect_normal">
</item>
<!--选中状态-->
<item
android:id="@android:id/progress"
android:drawable="@mipmap/btn_collect_selected">
</item>
</layer-list>
使用
android:progressDrawable="@drawable/ratingbar_my_evaluation"
设置监听
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {
String s = "等级"+v+"星星总数"+ratingBar.getNumStars();
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
}
});