RatingBar属于android.widget,从其继承树来看,它直接继承自android.widget.AbsSeekBar,AbsSeekBar直接继承自ProgressBar。RatingBar是ProgressBar的扩展,从其字面的意思,我们就能猜测出它的用处。它是用来显示一个分数或者评分等级之类的组件。它允许用户通过拖曳或者触摸或者通过左右方向键的形式来设置评分等级。下面我们用一个示例来说明一下RatingBar的常用的方法。首先是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" > <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ratingbarID" android:stepSize="0.1" /> </LinearLayout>
其中
android:numStars="5"
这句是定义星星的长度,也就是最大的星星是五颗星android:stepSize="0.1"
这句是定义的每次步进的长度。 Main.java中的内容: package com.e7android.apptest.ratingbar; import android.app.Activity; import android.os.Bundle; import android.widget.RatingBar; import android.widget.RatingBar.OnRatingBarChangeListener; import android.widget.Toast; public class Main extends Activity { /** Called when the activity is first created. */ private RatingBar ratingBar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //得到在xml文件中声明的RatingBar ratingBar=(RatingBar)this.findViewById(R.id.ratingbarID); //为RatingBar注册事件监听器 ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { // TODO Auto-generated method stub Toast.makeText(Main.this, "new rating:"+rating, Toast.LENGTH_SHORT).show(); } }); } } 测试效果: 有一点需要注意的是,RatingBar的secondary progress不应该被修改,因为它是内部用来显示未被填满的星的