用过RatingBar的都知道,这玩意比较坑,不好调整大小、间距、颜色及样式等难以自定义。这里给出一个RatingBar的终极解决方案-AndRatingBar
。
AndRatingBar
开源库,它继承自Android原生的RatingBar
,也继承了RatingBar可拖动的优良传统,通过对内部drawable的重写实现了大小可以根据控件大小而改变,并且可以方便的设置颜色,自定义图标等。
1,先看一下预览效果:
可以看出AndRatingBar
可以设置大小,间距,颜色,图标等样式,并且支持从右往左展示Rating,并且可以在RecyclerView中不会出现异常情况。
2,使用
AndRatingBar
的使用也很简单
首先添加依赖:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.wdsqjq:AndRatingBar:1.0.6'
}
然后在布局中引用
<per.wsj.library.AndRatingBar
android:layout_width="wrap_content"
android:layout_height="48dp"
app:starDrawable="@drawable/star_blue"
app:bgDrawable="@drawable/star_gray"
事件监听
ratingBar.setOnRatingChangeListener { ratingBar, rating ->
Log.e("ratingBar", "rating:$rating")
}
3,配置
前面提到过AndRatingBar继承自Android原生RatingBar,因此可以使用原生RatingBar的各种属性,常用如下:
- android:rating="1" 设置Rating
- android:numStars="8" 设置星星的数量
- android:layout_height="36dp" 设置控件的高度
- android:stepSize="0.5" 设置Rating的步长
- android:isIndicator="true" 设置是否是指示器(只能代码设置,不可手动设置)
另外AndRatingBar提供了扩展属性,可以方便的进行样式设置:
- app:starDrawable="" 设置星星的图标
- app:bgDrawable="" 设置背景的图标
- app:starColor="" 设置星星的颜色
- app:subStarColor="" 设置二级颜色
- app:bgColor="" 设置星星背景颜色
- app:keepOriginColor="" 设置是否保持图标原有的颜色
- app:starSpacing="4dp" 调整星星之间的间距
- app:scaleFactor="1.2" 通过缩放比例调整星星之间的间距
- app:right2Left="true" 从右往左展示
仓库地址:github.com/wdsqjq/AndR… ,gitee.com/wangshiju/A… 欢迎star