等级条RatingBar(星型打分)
RatingBar是基于SeekBar(滑动条)和ProgressBar(进度条)的扩展,用星型来显示等级评分。使用RatingBar的默认大小时,用户
可以触摸/拖动或者使用键来设置评分。它有两种样式(小风格ratingBarStyleSmall,大风格用ratingBarStglelndicator)其中大的只适合指示,不适合与用户交互
style="?android:attr/ratingBarStyleSmall"
只有当等级条布局的宽被设置为wrap_content时,设置的星星数量(通过函数setNumStars(int )或者在xml的布局文件中定义)将显示出来
事件处理接口:RatingBar.onRatingBarChangeListener
RatingBar XML属性:
android:islndicator 是否是一个指示器(用户无法进行更改)
android:numStars 显示的星型数量,必须是一个整形值
android:rating 默认的评分,必须是一个浮点类型
android:stepSize 评分的步长,必须是浮点类型,像1.2
//评分控件中两个比较重要的方法:
RatingBar.setRating(flaot rating);//设置等级
RatingBar.getRating();//获取等级
public class MainActivity extends Activity { private RatingBar ratingbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ratingbar = (RatingBar) findViewById(R.id.ratingbar); ratingbar.setMax(10);//这几个星型代表的总值 ratingbar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { Toast.makeText(MainActivity.this, rating+"", Toast.LENGTH_SHORT).show(); } }); } }
改变评分条默认的图片样式:
<RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/rating_bar" android:isIndicator="false" android:progressDrawable="@drawable/rating_bg" android:numStars="5" android:stepSize="1.0"/>
上面加粗的:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/icon_collection" /> 星星没选的图片 <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/star_half" /> 星星选一半的图片 <item android:id="@android:id/progress" android:drawable="@drawable/icon_collection_full" /> 星星选择的图片 </layer-list>
效果图: (需要UI切的图大点)