码迷,mamicode.com
首页 > 其他好文 > 详细

RatingBar的自定义

时间:2015-07-20 23:05:24      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

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

1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3      <style name="myRatingBar" parent="@android:style/Widget.RatingBar">
4         <item name="android:progressDrawable">@drawable/rating_bar</item>
5         <item name="android:minHeight">44dip</item>
6         <item name="android:maxHeight">44dip</item>
7     </style>
8 
9 </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文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 3     
 4     <item android:id="@+android:id/background"
 5           android:drawable="@drawable/pre_unpre"></item>
 6         
 7     <item android:id="@+android:id/secondaryProgress"
 8           android:drawable="@drawable/empty">
 9         
10     </item>
11     
12     <item android:id="@+android:id/progress"
13           android:drawable="@drawable/all">
14     </item>
15 
16 </layer-list>

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

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

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

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

pre_unpre.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 3    
 4    <item android:state_pressed="true"
 5        android:drawable="@drawable/bg710">
 6    </item>
 7    
 8    <item android:state_pressed="false"
 9        android:drawable="@drawable/empty"></item>
10 </selector>

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

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

技术分享

RatingBar的自定义

标签:

原文地址:http://www.cnblogs.com/joeleedreamer/p/4662776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!