Android星星评分控件RatingBar的使用
布局文件中定义控件以及属性,这里主要需要指定的是总星星数量,和当前的值,也就是总级别跟当前级别的量。
<RatingBar
android:id="@+id/ratingBar"
android:numStars="5" //总级别,总分,星星个数
android:rating="1.5" //当前级别,分数,星星个数
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</RatingBar>
评分控件中两个比较重要的方法:
RatingBar.setRating(flaot rating);
RatingBar.getRating();
事件监听处理:
RatingBar.setOnRatingBarChangeListener(newOnRatingBarChangeListener(){
@Override
public voidonRatingChanged(RatingBar ratingBar, floatrating, boolean fromUser) {
//doing actions
}
});
本文出自http://1622511.blog.51cto.com/1612511/567316
Android 中文 API ——RatingBar
正文
一、结构
publicclass RatingBar extends AbsSeekBar
Java.lang.Object
android.widget.ProgressBar
android.widget.RatingBar
二、概述

RatingBar是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定。使用RatingBar的默认大小时,用户可以触摸/拖动或使用键来设置评分,它有两种样式(小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndicator),其中大的只适合指示,不适合于用户交互。
当使用可以支持用户交互的RatingBar时,无论将控件(widgets)放在它的左边还是右边都是不合适的。
只有当布局的宽被设置为wrap content时,设置的星星数量(通过函数setNumStars(int)或者在XML的布局文件中定义)将显示出来(如果设置为另一种布局宽的话,后果无法预知)。
次级进度一般不应该被修改,因为他仅仅是被当作星型部分内部的填充背景。
三、嵌套类
接口:RatingBar.OnRatingBarChangeListener
一个回调函数,当星级进度改变时修改客户端的星级。
四、XML属性
|
属性名称 |
描述 |
|
android:isIndicator |
RatingBar是否是一个指示器(用户无法进行更改) |
|
android:numStars |
显示的星型数量,必须是一个整形值,像“100”。 |
|
android:rating |
默认的评分,必须是浮点类型,像“1.2”。 |
|
android:stepSize |
评分的步长,必须是浮点类型,像“1.2”。 |
五、公共方法
public int getNumStars ()
返回显示的星型数量
返回值
显示的星型数量
public RatingBar.OnRatingBarChangeListenergetOnRatingBarChangeListener ()
返回值
监听器(可能为空)监听评分改变事件
public float getRating ()
获取当前的评分(填充的星型的数量)
返回值
当前的评分
public float getStepSize ()
获取评分条的步长
返回值
步长
public boolean isIndicator ()
返回值
判断当前的评分条是否仅仅是一个指示器(注:即能否被修改)
public void setIsIndicator (booleanisIndicator)
设置当前的评分条是否仅仅是一个指示器(这样用户就不能进行修改操作了)
参数
isIndicator Bool值,是否是一个指示器
public synchronized void setMax (intmax)
设置评分等级的范围,从0到max
参数
max 评分条最大范围。
public void setNumStars (intnumStars)
设置显示的星型的数量。为了能够正常显示它们,建议将当前widget的布局宽度设置为
wrap content
参数
numStars 星型的数量
public void setOnRatingBarChangeListener(RatingBar.OnRatingBarChangeListener listener)
设置当评分等级发生改变时回调的监听器
参数
listener 监听器
public void setRating (floatrating)
设置分数(星型的数量)
参数
rating 设置的分数
public void setStepSize (floatstepSize)
设置当前评分条的步长(step size)
参数
stepSize 评分条的步进。例如:如果想要半个星星,它的值为0.5。
六、受保护方法
protectedsynchronized void onMeasure (intwidthMeasureSpec, 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手机开发者论坛)
Java文件
@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();
}});
}
}
XML文件
<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>
结束
本文为"madgoat"和"wallace2010"联合署名,原因是翻译重了,不过两个翻译得都很好,这样翻译重的事件也将随着管理的完善得意解决,感谢两位的相互理解,感谢大家的支持!
http://www.cnblogs.com/over140/archive/2010/11/18/1880391.html
Android星星评分控件RatingBar的使用的更多相关文章
- Android自定义评分控件:RatingStarView
RatingStarView Android自定义的评分控件,类似ProgressBar那样的,使用星星图标(full.half.empty)作为progress标识的评分/打分控件. 效果图 图1: ...
- iOS 类似美团或饿了么评价中的星星评分控件
1.做的好几个项目都用到了评分控件,可以用来展示评分,也可以用来写评分,图片和间距大小都可以定制,之前就已经简单封装了一个,现在把它分享出来,有需要的拿去用. 2.下面是展示截图: image.p ...
- Android 拖动条/滑动条控件、星级评分控件
ProgressBar有2个子控件: SeekBar 拖动条控件 RatingBar 星级评分控件 1.拖动条控件 <SeekBar android:layout_width=" ...
- 自定义RatingBar评分控件
1.介绍 实现类似美团外卖评分供能,系统提供了RatingBar,今天来自定义一波,当做自定义view的一个学习,效果如下,能够滑动或者点击变化星星数量 2.自定义属性 在values目录下的attr ...
- Android 中常见控件的介绍和使用
1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...
- JQuery版评分控件
Hi All, 分享一个学习JQuery做的一个评分控件. 需求:当鼠标移动到 ‘☆’ 上时,该字符左边的 ‘☆’ 变成 '★',该字符右边仍然是 ‘☆’, 并显示相应星星数的评价结果:当鼠标推出 ‘ ...
- Web用户控件开发--星型评分控件
本文中分享一个实现简单,使用方便的星型评分控件. 一:贴几张测试图片先: 二.星型评分控件的实现: RatingBar.ascx: <%@ Control Language="C#&q ...
- UWP开发---DIY星级评分控件
一,需求来源 在开发韩剧TV UWP过程中,遇到了星级评分的控件问题,在安卓和html中很容易用现有的轮子实现星级评分,搜索了一下目前UWP还未有相关文章,在WPF的一篇文章中使用Photo shop ...
- iOS- 非整星的评分控件(支持小数)
概述 订单评论里实现星级评分控件: 简单整星评价与非整星的精评价. 详细 代码下载:http://www.demodashi.com/demo/10711.html 现在很多应用都有评分功能. 有了订 ...
随机推荐
- 开源数据库连接池proxool
可以根据自己的实际情况,选择不同的配置,可以选择properties.XML.Servlet等配置,官方网站上都有介绍. 1.下载proxool 地址:http://proxool.sourcef ...
- SqlServer性能优化和工具Profiler(转)
合理的优化和熟练的运用Profiler会让你更好的掌握系统的sql语句和存储过程的效率 目录 第1章 如何打开SQL Server Profile. 3 第2章 SQL Server Profile. ...
- 幸运数字(number)
幸运数字(number) Time Limit:1000ms Memory Limit:64MB [题目描述] LYK最近运气很差,例如在NOIP初赛中仅仅考了90分,刚刚卡进复赛,于是它决定使用 ...
- iis6兼容32位运行
做web服务迁移,从32位win2003迁移到64位win2003,数据库是32位Oracle在另外一台服务器上. 迁移之后数据库各种连不上,oracle的客户端32位的装完装64位的,odp.net ...
- SQL Server 存储过程(转载)
SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...
- #utf-8与gbk转换 #bytes 和str 的转换
#!/user/bin/env python # -*- coding:utf-8 -*- temp = "连接" temp_unicode = temp.decode('utf- ...
- #使用while循环输入1 2 3 4 5 6 8 9 10
#!/usr/bin/env python #使用while循环输入1 2 3 4 5 6 8 9 10 import time start = 1 while True: if start == 7 ...
- qt 2 打开文件选择框
QString sFileName = ""; sFileName = QFileDialog::getOpenFileName(this,tr("Open") ...
- PHP clone
PHP clone 定义一个电视类 class Tv{public $width=100;public function setWidth($v){$this->width = $v; ...
- SqlServer 存储过程分页
适用于2005以上版本 create procedure [dbo].[SP_GetPageList] ( @columns nvarchar(max), --查询字段 @tablename nvar ...