返回介绍

RatingBar

发布于 2025-03-09 17:00:31 字数 8028 浏览 0 评论 0 收藏 0

RatingBar

翻译人:wallace2010/ madgoat

http://blog.csdn.net/springiscoming2008

版本:Android 2.2 r1

public class RatingBar extends AbsSeekBar

java.lang.Object

android.view.View

android.widget.ProgressBar

android.widget.AbsSeekBar

android.widget.RatingBar

类概述

说明: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\_T0)`TREGPTYW8572GPI3FW.jpg

RatingBar 是基于 SeekBar 和 ProgressBar 的扩展,用星型来显示等级评定。使用 RatingBar 的默认大小时,用户可以触摸/拖动或使用键来设置评分,它有两种样式(小风格用 ratingBarStyleSmall,大风格用 ratingBarStyleIndicator),其中大的只适合指示,不适合于用户交互。

当使用可以支持用户交互的 RatingBar 时,无论将控件(widgets) 放在它的左边还是右边都是不合适的。

只有当布局的宽被设置为 wrap content 时,设置的星星数量(通过函数 setNumStars(int) 或者在 XML 的布局文件中定义)将显示出来(如果设置为另一种布局宽的话,后果无法预知)。

次级进度一般不应该被修改,因为他仅仅是被当作星型部分内部的填充背景。

参见 Form Stuff tutorial .

嵌套类

接口: RatingBar.OnRatingBarChangeListener

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

XML属性

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

公共方法

public int getNumStars ()

返回显示的星型数量

返回值

显示的星型数量

public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener ()

返回值

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

public float getRating ()

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

返回值

当前的评分

public float getStepSize ()

获取评分条的步长

返回值

The step size.

步长

public boolean isIndicator ()

返回值

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

public void setIsIndicator (boolean isIndicator)

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

参数

isIndicator Bool 值,是否是一个指示器

public synchronized void setMax (int max)

设置评分等级的范围,从 0 到 max

参数

max 评分条最大范围。

public void setNumStars (int numStars)

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

参数

numStars 星型的数量

public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)

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

参数

listener 监听器

public void setRating (float rating)

设置分数(星型的数量)

参数

rating 设置的分数

public void setStepSize (float stepSize)

设置当前评分条的步长(step size)

参数

stepSize 评分条的步进。例如:如果想要半个星星,它的值为 0.5。

受保护方法

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 .进行编码。

heightMeasureSpec 受主窗口支配的垂直空间要求。这个需求通过 View.MeasureSpec .进行编码。

 

补充

文章链接

Android 控件之 RatingBar 评分条

Android 更换 RatingBar 图片

[Android 学习指南]RatingBar 评分条

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

AndroidRatingBar.java

public class AndroidRatingBar extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super .onCreate(savedInstanceState);

setContentView(R.layout. main );

final RatingBar ratingBar_Small = (RatingBar)findViewById(R.id. ratingbar_Small );

final RatingBar ratingBar_Indicator = (RatingBar)findViewById(R.id. ratingbar_Indicator );

final RatingBar ratingBar_default = (RatingBar)findViewById(R.id. ratingbar_default );

ratingBar_default.setOnRatingBarChangeListener( new RatingBar.OnRatingBarChangeListener(){

public void onRatingChanged(RatingBar ratingBar, float rating,

boolean fromUser) {

ratingBar_Small.setRating(rating);

ratingBar_Indicator.setRating(rating);

Toast. makeText (AndroidRatingBar. this , "rating:"+String. valueOf (rating),

Toast. LENGTH_LONG ).show();

}});

}

}

main.xml

<?xml version= "1.0" encoding= "utf-8" ?>

<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"

android:orientation= "vertical"

android:layout_width= "fill_parent"

android:layout_height= "fill_parent"

>

<TextView

android:layout_width= "fill_parent"

android:layout_height= "wrap_content"

android:text= "@string/hello"

/>

<RatingBar

android:layout_width= "wrap_content"

android:layout_height= "wrap_content"

style= "?android:attr/ratingBarStyleIndicator"

android:id= "@+id/ratingbar_Indicator"

/>

<RatingBar

android:layout_width= "wrap_content"

android:layout_height= "wrap_content"

style= "?android:attr/ratingBarStyleSmall"

android:id= "@+id/ratingbar_Small"

android:numStars= "20"

/>

<RatingBar

android:layout_width= "wrap_content"

android:layout_height= "wrap_content"

style= "?android:attr/ratingBarStyle"

android:id= "@+id/ratingbar_default"

/>

</LinearLayout>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文