Android RatingBar

分享到:

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

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

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

RatingBar类结构:

java.lang.Object

	android.view.View

		android.widget.ProgressBar

			android.widget.AbsSeekBar

				android.widget.RatingBar

RatingBar XML属性:

android:isIndicator RatingBar是否是一个指示器(用户无法进行更改)
android:numStars 显示的星型数量,必须是一个整形值,例如"10"
android:rating 默认的评分,必须是浮点类型,例如"1.2"
android:stepSize 评分的步长,必须是浮点类型,例如"1.2"

RatingBar 公共方法:

public int getNumStars ()

返回显示的星型数量 

返回值 显示的星型数量

public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener () 返回值 监听器(可能为空)监听评分改变事件
public float getRating ()

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

返回值 当前的评分

public float getStepSize ()

获取评分条的步长

返回值 步长

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

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

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

public synchronized void setMax (int max) 设置评分等级的范围,从0到max 参数 max 评分条最大范围
public void setNumStars (int numStars)

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

参数 listener 监听器

public void setRating (float rating)

设置分数(星型的数量)

参数 rating 设置的分数

public void setStepSize (float stepSize)

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

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

RatingBar 受保护方法

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

RatingBar实例:(源码来自网络)

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>

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();
   }});
   }
}
昵    称:
验证码:

相关文档:

  • 高德开发 android 出现 key 鉴权失败
    环境windows+androidstudio 原因:曾经更改过key.store 解决办法: 首先运行cmd移动到keystore的目录下keytool-list-keystore文件名。输入密钥口令然后...
  • ViewPager 详解(一)---基本入门
    ViewPager详解(一)---基本入门-harvic-博客频道-CSDN.NET 前言:这两天研究研究ViewPager滚动功能,现在很多的app都有用到这个功能,我们的...
  • Android 计时器Timer用法
    昨天晚上在写一个Android的计时器,开始认为很容易,用Java一般写法,结果发现计时器根本不能运行,但却不报任何错误,当时就呆在那...
  • android应用开发 listview
    我们经常会在应用程序中使用列表的形式来展现一些内容,所以学好ListView是非常必需的。ListView也是Android中比较难以使用的控件,这节...
  • 解析在Android中为TextView增加自定义HTML标签的实现方法_Android
    本篇文章是对在Android中为TextView增加自定义HTML标签的方法进行了详细的分析介绍。需要的朋友参考下...
  • (二十八)android中注意的事项
    一、android在代码中动态设置字体颜色需要注意的问题。 直接这样写是不行的 tv.setTextColor(R.color.textColor_black); 要从resources中获取 tv.setTextC...
  • Android推送方案分析(MQTT/XMPP/GCM)
    方案1、 使用GCM服务(Google Cloud Messaging) 简介:Google推出的云消息服务,即第二代的G2DM。 优点:Google提供的服务、原生、简单,无...
  • Android中使用sax解析xml文件的方法_Android
    本篇文章介绍了,在Android中使用sax解析xml文件的方法。需要的朋友参考下...
  • Android-自定义TextView和异步加载图片的实现
    1. 定义一个继承LinearLayout的类:ConstomTextView 2. 在ConstomTextView类中自定义setText()方法 3.在setText方法中,通过TypedArray来获取自定义属性...
  • Android 取得状态栏、任务栏高度的小例子_Android
    Android 取得状态栏、任务栏高度的小例子,需要的朋友可以参考一下...
  • android ListView Tips
    在ListView中设置Selector为null会报空指针?mListView.setSelector(null);//空指针试试下面这种:mListView.setSelector(newColorDrawable(Color.TRANSPARENT));如何...
  • Java.lang.IllegalStateException Activity has been destroyed
    03-0412:01:05.468:E/AndroidRuntime(2474):FATALEXCEPTION:mainjava.lang.IllegalStateException:Activityhasbeendestroyedatandroid.app.FragmentManagerImpl....
  • Android studio教程:[2]项目整体布局
    上篇介绍了如何创建项目,这一次将介绍创建完的项目如何呈现在开发者的眼前,介绍androidstudio开发环境的整体布局,让大家知道各个...
  • android操作XML的几种方式
    XML作为一种业界公认的数据交换格式,在各个平台与语言之上,都有广泛使用和实现。其标准型,可靠性,安全性......毋庸置疑。在androi...
  • Mono for Android 篇一 环境的搭建
    JAVASDK和AndroidSDK下载安装 1、疑问:用monoforandroid开发为什么必须要javasdk的支持 答:因为androidsdk是java开发的,所以和它相关的工具都需...
  • Android省电妙招
    Android手机该如何省电?相信这个问题困扰着很多玩家,小编也是如此,早上刚刚充满的电量,白天又没怎么使用过,怎么到晚上就没电了...
  • Android -- Support包特性
    干货 每一个Support包版本后缀vX所代表的含义是他能够被使用的最低版本等级。之所以无法在更低版本进行使用的原因,是因为随着版本...
  • Android DigitalClock
    AnalogClock控件能实现一个以数字格式显示的电子时钟,(在Android4.4中已此类型经被弃用,不推荐使用)样式就像我们平时用的电子表,如12:30:10...
  • WM平台玩转Android全攻略
    Android系统目前大行其道,flowermix也把玩过一段时间的G2,被Android系统的开放性和丰富的软件所吸引(我是重度测试控╮( ̄▽ ̄")╭)。...
  • 转载 GridView异步加载内存卡和网络图片
    一、主界面代码: viewplain...
Android控件
Android基础知识
Android组件
Android实例