Android星级评分条控件RatingBar使⽤详解
Android开发中,时不时的就有要实现星星的评分效果,⽐如某宝,某团,相信⼤家也都见过,当然了我们可以⾃⼰去画,也可以⽤美⼯给切的图去实现,其实在Android原⽣的控件中就可以来实现这样的效果,它就是RatingBar。
来,我们先看⼀张图(只在代码中引⼊了控件)
实现效果如下图:
我们先看⼀下它的继承关系:这玩意和SeekBar的类结构是⼀样的,也是ProgressBar的⼦类
相关属性:
android:isIndicator:是否⽤作指⽰,⽤户⽆法更改,默认false
android:numStars:显⽰多少个星星,必须为整数
android:rating:默认评分值,必须为浮点数
android:stepSize:评分每次增加的值,必须为浮点数
除了上⾯这些,还有两种样式供我们选择咧,但是不建议使⽤,因为这两种样式都好丑... 他们分别是:
事件处理:只需为RatingBar设置OnRatingBarChangeListener事件,然后重写下onRatingChanged()⽅法即可!
实现代码如下:
public class MainActivity extends AppCompatActivity {
private RatingBar rb_normal;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
rb_normal = (RatingBar) findViewById(R.id.rb_normal);
rb_normal.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
Toast.makeText(MainActivity.this, "rating:" + String.valueOf(rating),
Toast.LENGTH_LONG).show();
}
});
}
}
⾃定义样式阶段:
接下来和前⾯的SeekBar⼀样编写⼀个layer-list的⽂件:
l:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="schemas.android/apk/res/android">
<item android:id="@android:id/background"
android:drawable="@mipmap/ic_rating_off1" />
<item android:id="@android:id/secondaryProgress"
android:drawable="@mipmap/ic_rating_off1" />
<item android:id="@android:id/progress"
android:drawable="@mipmap/ic_rating_on1" />
</layer-list>
接着在l中⾃定义下RatingBar Style,在l加上这个:
<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingbar_full</item>
<item name="android:minHeight">24dip</item>
<item name="android:maxHeight">24dip</item>
</style>
最后在布局中的Ratingbar组件设置下:
<RatingBar
android:id="@+id/rb_normal"
android layout布局android:layout_width="wrap_content"
android:layout_height="wrap_content" />
可以实现效果如下图:
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论