一、结构
01 public class RatingBar extends AbsSeekBar
02
03 java.lang.Object
04 android.view.View
05 android.widget.ProgressBar
06 android.widget.AbsSeekBar
07 android.widget.RatingBar

二、概述

RatingBar是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定。使用RatingBar的默认大小时,用户可以触摸/拖动或使用键来设置评分,它有两种样式(小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndicator),其中大的只适合指示,不适合于用户交互。
当使用可以支持用户交互的RatingBar时,无论将控件(widgets)放在它的左边还是右边都是不合适的。
只有当布局的宽被设置为wrap content时,设置的星星数量(通过函数setNumStars(int)或者在XML的布局文件中定义)将显示出来(如果设置为另一种布局宽的话,后果无法预知)。
次级进度一般不应该被修改,因为他仅仅是被当作星型部分内部的填充背景。
参见Form Stuff tutorial.

三、嵌套类

view source print ?
01 接口:RatingBar.OnRatingBarChangeListener

一个回调函数,当星级进度改变时修改客户端的星级。

四、XML属性

属性名称 描述
android:isIndicator RatingBar是否是一个指示器(用户无法进行更改)
android:numStars 显示的星型数量,必须是一个整形值,像“100”。
android:rating 默认的评分,必须是浮点类型,像“1.2”。
android:stepSize 评分的步长,必须是浮点类型,像“1.2”。

五、公共方法

view source pri ? nt
01 public int getNumStars ()

返回显示的星型数量
返回值
显示的星型数量

view source print ?
01 public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener ()

返回值
监听器(可能为空)监听评分改变事件

view source print ?
01 public float getRating ()

获取当前的评分(填充的星型的数量)
返回值
当前的评分

view source print ?
01 public float getStepSize ()

获取评分条的步长
返回值
步长

view source print ?
01 public boolean isIndicator ()

返回值
判断当前的评分条是否仅仅是一个指示器(注:即能否被修改)

view source print ?
01 public void setIsIndicator (boolean isIndicator)

设置当前的评分条是否仅仅是一个指示器(这样用户就不能进行修改操作了)
参数
isIndicator Bool值,是否是一个指示器

view source print ?
01 public synchronized void setMax (int max)

设置评分等级的范围,从0到max
参数
max 评分条最大范围。

view source print ?
01 public void setNumStars (int numStars)

设置显示的星型的数量。为了能够正常显示它们,建议将当前widget的布局宽度设置为
wrap content
参数
numStars 星型的数量

view source print ?
01 public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)

设置当评分等级发生改变时回调的监听器
参数
listener 监听器

view source print ?
01 public void setRating (float rating)

设置分数(星型的数量)
参数
rating 设置的分数

view source print ?
01 public void setStepSize (float stepSize)

设置当前评分条的步长(step size)
参数
stepSize 评分条的步进。例如:如果想要半个星星,它的值为0.5。

六、受保护方法

view source print ?
01 protected synchronized void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

权衡 view 和 content 来决定它的宽度和高度的整齐。它被measure(int, int) 调用 并且应该被子类所覆盖,以便提供准确高效的布局测量。
规定: 当覆盖这个方法的时候,你必须调用 setMeasuredDimension(int, int)以便存储精确的视图的宽和高。如果不这样做的话将触发llegalStateException异常,被函数 measure(int, int)抛出。调用父类 onMeasure(int, int)是合理的。
尺寸的基本类的实现默认是背景大小,除非通过MeasureSpec允许大的尺寸。子类应该覆盖 onMeasure(int, int) 以便提供更好的布局大小。
如果这个方法被覆盖,子类应该负责确保标准的宽和高至少是视图的最小宽度和高度的值(分别为getSuggestedMinimumHeight() 和 getSuggestedMinimumWidth()两方法)。
参数
widthMeasureSpec 受主窗口支配的水平空间要求。这个需求通过 View.MeasureSpec.进行编码。

七、补充

文章链接

Android 控件之RatingBar评分条
Android更换RatingBar图片
[Android学习指南]RatingBar 评分条

示例代码(代码转载自Android手机开发者论坛)
Java文件

view source print ?
01 public class AndroidRatingBar extends Activity {
02 /** Called when the activity is first created. */
03 @Override
04 public void onCreate(Bundle savedInstanceState) {
05 super.onCreate(savedInstanceState);
06 setContentView(R.layout.main);
07
08 final RatingBar ratingBar_Small = (RatingBar)findViewById(R.id.ratingbar_Small);
09 final RatingBar ratingBar_Indicator = (RatingBar)findViewById(R.id.ratingbar_Indicator);
10 final RatingBar ratingBar_default = (RatingBar)findViewById(R.id.ratingbar_default);
11
12 ratingBar_default.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){
13
14 public void onRatingChanged(RatingBar ratingBar, float rating,
15 boolean fromUser) {
16 ratingBar_Small.setRating(rating);
17 ratingBar_Indicator.setRating(rating);
18 Toast.makeText(AndroidRatingBar.this, "rating:"+String.valueOf(rating),
19 Toast.LENGTH_LONG).show();
20 }});
21 }
22 }

XML文件

view source print ?
01 <?xml version="1.0" encoding="utf-8"?>
02 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03 android:orientation="vertical"
04 android:layout_width="fill_parent"
05 android:layout_height="fill_parent"
06 >
07 <TextView
08 android:layout_width="fill_parent"
09 android:layout_height="wrap_content"
10 android:text="@string/hello"
11 />
12 <RatingBar
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 style="?android:attr/ratingBarStyleIndicator"
16 android:id="@+id/ratingbar_Indicator"
17 />
18 <RatingBar
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"
21 style="?android:attr/ratingBarStyleSmall"
22 android:id="@+id/ratingbar_Small"
23 android:numStars="20"
24 />
25 <RatingBar
26 android:layout_width="wrap_content"
27 android:layout_height="wrap_content"
28 style="?android:attr/ratingBarStyle"
29 android:id="@+id/ratingbar_default"
30 />
31 </LinearLayout>

声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com/
Android中文翻译组:http://www.cnblogs.com/over140/

更多相关文章

  1. Android -- 跳转应用市场评分
  2. Android进入应用下载评分界面
  3. android拖动条和评分组件的使用
  4. Android评分控件RatingBar使用实例解析
  5. Android 关于RatingBar评分条
  6. android评分条RatingBar自定义设置
  7. Android P WiFi自动连接评分机制
  8. 关于标准android中视频播放器中的快进和快退的步长时间设置
  9. android 实现类似Iphone底部消息数量提示

随机推荐

  1. Android Wear 开发-创建第一个卡片
  2. android 实现QQ好友列表
  3. 解决一个Android Studio gradle的小问题
  4. Android 官方示例:android-architecture
  5. Android之TextView 详细字典
  6. android多语言设置
  7. Android Studio如何生成APK文件
  8. 浅谈android hook技术
  9. Android 反编译apk 到java源码的方法
  10. android绘图