在android想要实现评分的效果一般采用ratingbar进行展示,它的默认为五颗星星,支持满颗星星以及半颗星星。用户可以通过点击或者是拖动来进行评分的活动。
首先说一下它的特有的属性:
android:isIndicator 设置ratingbar是否为展示模式,当 设置为true的时候只能起到展示的功能无法进行交互操作。默认的情况下设置为false。
android:numStars 设置显示的星星的数量,只支持int类型,
android: rating 设置默认的评分,输入的类型为浮点数
android:stepSize 属性用来设置步长,即一次增加或者减少的星星数目是这个数字的整数倍。必须是浮点类型,例如 0.5。
然后是ratingbar的基本方法:
getNumStarts()获得显示的星星的数量 相对应方法setNumStarts() 设置显示星星的数量
RatingBar.OnRatingBarChangeListener 监听器,监听当评分发生变化的监听
getRating() 获得当前的评分,返回值是浮点型数据 相对应方法setRating(float t)
getStepSize() 获得当前的步长 相对应方法 setSetSize(float t)
isIndicator() 获得当前的ratingbar是否为可编辑状态
最后官方提供的三种样式是三种不同样式的绿色星星,但很多时候不能满足 需求,需要使用自定义的演示显示评分像是五个水果或者饼干等等
自定义ratingbar:
首先需要新建一个自定义的ratingbar背景条,使用layer-list其中添加三种图片
<?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/star_empty" /> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/star_half" /> <item android:id="@android:id/progress" android:drawable="@drawable/star_full" /> </layer-list>
其次在style当中新建一个style
<!-- 评分条样式 --> <style name="roomRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/rating</item> <item name="android:minHeight">16dip</item> <item name="android:maxHeight">16dip</item> </style>
下面为一个简单的效果图