转载地址:http://blog.csdn.net/sjf0115/article/details/7249777
<1>简介
RatingBar为评分条控件,默认效果为若干个绿色的星星,如果想将其换成其他自定义图片就要自定义它的style。
RatingBar是SeekBar 和 ProgressBar 的一种扩展,用星星表示等级。
当RatingBar使用默认的大小,用户可以点击/拉拽或使用方向键来设置等级。当RatingBar使用默认的大小。
它有两种样式(小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndicator),其中大的只适合指示,不适合于用户交互(用户无法改变)。
当使用可以支持用户交互的RatingBar时,无论将控件(widgets)放在它的左边还是右边都是不合适的。
只有当布局的宽被设置为wrap content时,设置的星星数量(通过函数setNumStars(int)或者在XML的布局文件中定义)将显示出来(如果设置为另一种布局宽的话,后果无法预知)。
次级进度一般不应该被修改,因为他仅仅是被当作星型部分内部的填充背景。
<2>属性
属性名称 |
描述 |
android:isIndicator |
RatingBar是否是一个指示器(用户无法进行更改) |
android:numStars |
显示的星型数量,必须是一个整形值,像“100”。 |
android:rating |
默认的评分,必须是浮点类型,像“1.2”。 |
android:stepSize |
评分的步长,必须是浮点类型,像“1.2”。 |
<3>方法:
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的步长。
<4>范例
- package xiaosi.ratingbar;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.RatingBar;
-
- public class RatingBarActivity extends Activity {
-
- private RatingBar ratingbar = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- ratingbar = (RatingBar)findViewById(R.id.ratingbar);
- ratingbar.setOnRatingBarChangeListener(new RatingBarListener());
- }
-
- private class RatingBarListener implements RatingBar.OnRatingBarChangeListener{
-
- public void onRatingChanged(RatingBar ratingBar, float rating,
- boolean fromUser) {
- System.out.println("等级:" + rating);
- System.out.println("星星:" + ratingBar.getNumStars());
- }
- }
- }
main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
-
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="第一种风格(可交互)" />
- <RatingBar
- android:id="@+id/ratingbar"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:numStars="5"
- android:stepSize="1"/>
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="第二种风格(ratingBarStyleSmall)" />
- <RatingBar
- android:id="@+id/ratingbar2"
- style="?android:attr/ratingBarStyleSmall"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:numStars="5"
- android:stepSize="1"/>
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="第三种风格(ratingBarStyleIndicator)" />
- <RatingBar
- android:id="@+id/ratingbar3"
- style="?android:attr/ratingBarStyleIndicator"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:numStars="5"
- android:stepSize="1"/>
- </LinearLayout>