RatingBar的自定义

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的自定义就写完了。

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

转载于:https://www.cnblogs.com/joeleedreamer/p/4662776.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值