亲,麻烦给个五星好评!—RatingBar
上一篇的checkbox
已经让大家越来越接近实战演练了,本章我们继续分享干货给大家,今天介绍一个实用的ui控件ratingbar
(星级评分条),对于使用过电商app(某东,某宝等)的小伙伴们来说,应该不会陌生。在对商品进行评价时,经常会出现五星好评的评分样式,这个五星评分样式就是今天的主角ratingbar
。
ratingbar
:用于评分和展示的星级评分控件。
public class ratingbar extends absseekbar java.lang.object ↳ android.view.view ↳ android.widget.progressbar ↳ android.widget.absseekbar ↳ android.widget.ratingbar
由上面的继承结构可以看出,ratingbar
是基于seekbar
和progressbar
的扩展。
基本使用
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".mainactivity"> <ratingbar android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout>
在项目里直接放一个ratingbar
,看下运行效果:
可以看出,系统给我们提供了一套默认的样式与代码逻辑,如果想实现我们自己的样式逻辑,可在此基础上进行修改。
xml常用属性
android:isindicator
:是否用作指示,即用户是否可点击更改,默认false(可点击)。
android:numstars
:显示多少个星星,必须为整数。
android:rating
:默认评分值,必须为浮点数。
android:stepsize
: 评分每次增加的值,必须为浮点数。
除了上面这些,系统还为我们提供了三种样式,供我们选择:
使用示例:
上面介绍系统提供的三种样式,主要是改变星星的大小,如果需要使用其他样式,还需要进行自定义,方式如下:
1.在drawable
下编写一个layer-list
文件ratingbar_layer
。
<?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/rating_off"/> <item android:id="@android:id/progress" android:drawable="@drawable/rating_on"/> </layer-list>
注意:drawable
中引用的图片,需要根据设计图尺寸,放在不同屏幕密度的drawable
文件夹下,用于屏幕适配。
2.在values
文件夹下styles.xml
文件中添加style
样式。
<style name="my_ratingbar" parent="@android:style/widget.ratingbar">
<item name="android:progressdrawable">@drawable/ratingbar_layer</item>
<item name="android:minheight">24dp</item>
<item name="android:maxheight">24dp</item>
</style>
3.在xml
布局里进行使用。
<ratingbar android:id="@+id/ratingbar" style="@style/my_ratingbar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numstars="5" android:rating="3" android:stepsize="1" />
监听处理
很多时候,我们还需要对星星的选择事件进行监听,获取用户选择的星星数量,这就需要我们在代码中进行监听操作。
ratingbar ratingbar = findviewbyid(r.id.ratingbar); //星星变化监听 ratingbar.setonratingbarchangelistener(new ratingbar.onratingbarchangelistener() { @override public void onratingchanged(ratingbar ratingbar, float rating, boolean fromuser) { toast.maketext(mainactivity.this, "rating==" + string.valueof(rating), toast.length_short).show(); } });
结语
以上就是ratingbar
的使用介绍,是不是so easy,赶快在项目中使用吧!也麻烦各位小伙伴们以后看完我们的文章顺手点个赞吧~ 如果小伙伴想学习更多知识或者快速学习进阶,可以加入我们的wxgzh:下码看花一起探讨~