AppCompatRatingBar的使用
昨天遇到项目中使用AppCompatRatingBar来做评分的,效果已经弄出来了,但是如论如何改变属性就是弄不出来5个,不配置progressDrawable的话,还可以展示出来。然后就开始了我的排查之路。
- 修改style或者自定义style
- 宽和高的检查
- progressDrawable和indeterminateDrawable的修改
- 修改drawable依赖的图片
经过一番操作发现,还是我依赖的资源有问题。
<?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_star_off" />
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/icon_star_off" />
<item
android:id="@android:id/progress"
android:drawable="@drawable/icon_star_on" />
</layer-list>
最开始我想的是减少资源的引用,尽可能的使用矢量图来做,因此两个资源都放在drawable
中,都是svg制作出来的图片。然后重新导入,修改图片的资源为png格式的就发现问题解决啦。
另外还有一个问题就是通过svg作为图片进行导入的时候,需要勾选无边框,这样才能再使用的时候不会有间隔线
<?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="@mipmap/icon_star_off" />
<item
android:id="@android:id/secondaryProgress"
android:drawable="@mipmap/icon_star_off" />
<item
android:id="@android:id/progress"
android:drawable="@mipmap/icon_star_on" />
</layer-list>
常见的属性说明:
(1)max:表示最大值,即满分是多是
(2)numStars:满分情况下一共有多少颗星
(3)rating:默认几颗星是亮的
(4)progressDrawable:设置选中状态和未选中状态的星星的切图
(5)isIndicator:是否是指示器。(如果设置为true,意思是RatingBar作为指示器,不可通过触摸改变RatingBar的进度)
(6)stepSize:步长,默认是0.5,即可以显示半颗星