今天做一个评分的功能,但是Android自带的ratingbar的格式限制太多,只有两种格式提供,一个是特别大的,一个是特别小的,根本无法用到商业项目中去,于是自己自定义了一下ratingbar效果如下所示:
RatingBar为评分条控件,默认效果为若干个绿色的星星,如果想将其换成其他自定义图片就要自定义它的style。
<RatingBar android:id="@+id/detail_rb_score_detail" style="@style/MyRatingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/detail_tv_score_detail" android:numStars="5" android:rating="1.5" android:stepSize="0.5" />
其中android:numStars="5"设置显示的星星数量为5; android:rating="5"设置选中的数量为5,也就是全部选中
android:isIndicator="true"设置评分条只显示结果无法通过点击改变选中状态。
然后在res/values目录下建立styles.xml文件 代码:
<style name="MyRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/detail_ratingbar</item> <item name="android:minHeight">20dip</item> <item name="android:maxHeight">20dip</item> </style>
android:progressDrawable为评分条图案。接下来在res/drawable目录下建立RatingBar.xml文件
<?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" /> <item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/detail_float" /> <item android:id="@+android:id/progress" android:drawable="@drawable/rating_show" /> </layer-list>
layer-list 可以把图片进行层叠,实现类似的效果!
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+android:id/background" android:drawable="@drawable/detail_score_bg" /> <item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/detail_float" /> <item android:id="@+android:id/progress" android:drawable="@drawable/detail_score_press" /> </layer-list>
如有问题请留言,若转载注明出处。