1、RatingBar控件知识点
RatingBar是基于SeekBar和ProgressBar的扩展,用五角星形状显示来进行等级评定。使用RatingBar的默认大小时,用户可以触摸、拖动或者使用按键来设置评分。
它有两种样式:小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndicator,其中大风格只用于显示,不能适用于用户交互。
2、xml布局文件
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/toggleButton1"
android:numStars="5"
android:rating="3.5"
android:stepSize="2"
android:isIndicator="true" />
重要属性:
android:numStars 星星的总个数
android:rating 初始值
android:stepSize 步长,每次单击点亮星星的个数
android:isIndicator 该控件是否只是可读的,即true时用户不能点击,false时用户能够
3、java代码
改变点亮的星星个数触发的事件: RatingBar.OnRatingBarChangeListener()
package com.example.togglebtnratingbar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.RatingBar;
public class MainActivity extends Activity{
private RatingBar ratingBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ratingBar = (RatingBar) this.findViewById(R.id.ratingBar1);
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingbar, float rating, boolean fromUser) {
// ratingbar 评分修改的RatingBar
// rating 当前评分分数。取值范围为0到星型的数量。
// fromUser 如果评分改变是由用户触摸手势或方向键轨迹球移动触发的,则返回true
// TODO 业务逻辑
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
其他方法:
RatingBar.setRating() 设置点亮的星星个数
RatingBar.getRating() 得到点亮的星星个数