您的位置:首页 > 其它

RatingBar的自定义

2015-07-20 21:36 260 查看
RatingBar的实现其实是很简单的,只要在xml布局文件中写就行了

范例:

在主布局文件中,只需要写<RatingBar/>即可

main.xml

1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2     xmlns:tools="http://schemas.android.com/tools"
3     android:layout_width="match_parent"
4     android:layout_height="match_parent"
5     tools:context="com.jorlee.ratingbar.MainActivity" >
6
7     <RatingBar
8         android:id="@+id/rating_bar"
9         style="@style/myRatingBar"
10         android:layout_height="wrap_content"
11         android:layout_width="wrap_content"
12         android:numStars="5"
13         android:stepSize="0.1"
14         android:rating="2.5">
15     </RatingBar>
16
17
18 </RelativeLayout>


RatingBar的layout_height和layout_width一般都设置成wrap_content ,避免图片显示不全的问题

numStars是星星显示的个数,即评分级数

stepSize可以理解为一个评分单位,这里设置为0.1就是最小可以评0.1颗星星

rating是当前评分的星星颗数,这里设置为2.5就是当前有两个半星星被评了分

其中,在main.xml文件中的第9行,style就是自定义RatingBar的关键之处,因此,需要在res/values目录下写一个xml文件

RatingBar.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="myRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/rating_bar</item>
<item name="android:minHeight">44dip</item>
<item name="android:maxHeight">44dip</item>
</style>

</resources>


其中style name ="myRatingBar"里面的name "myRatingBar"要对应于main.xml文件中的style="@style/myRatingBar"

<item name="android:minHeight">44dip</item>

<item name="android:maxHeight">44dip</item>

这两个是设置RatingBar的大小的

<item name="android:progressDrawable">@drawable/rating_bar</item>

这个是设置RatingBar样式的,默认的RatingBar是星星的图片,如果想用自己的图片的话,就在res/drawable目录下写一个rating_bar.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/pre_unpre"></item>

<item android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/empty">

</item>

<item android:id="@+android:id/progress"
android:drawable="@drawable/all">
</item>

</layer-list>


secondaryProgress设置为没有评分时的图片

progress设置为评分之后的效果图片

系统会自动生成中间过程的效果的图片

在background里也可以设置背景效果,这里我写了一个点击RatingBar发生变化的效果

pre_unpre.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"
android:drawable="@drawable/bg710">
</item>

<item android:state_pressed="false"
android:drawable="@drawable/empty"></item>
</selector>


至此,RatingBar的自定义就写完了。

贴上效果图:(因为图片是随便找的,而且找的也是星星,很丑,勿喷)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: