Android RatingBar终极解决方案,大小、颜色、间距、样式随便定义

6,622

用过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