android 深入研究ratingbar自定义

今天做一个评分的功能,但是Android自带的ratingbar的格式限制太多,只有两种格式提供,一个是特别大的,一个是特别小的,根本无法用到商业项目中去,于是自己自定义了一下ratingbar效果如下所示:


RatingBar为评分条控件,默认效果为若干个绿色的星星,如果想将其换成其他自定义图片就要自定义它的style。

?
1
2
3
4
5
6
7
8
9
<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文件 代码:

?
1
2
3
4
5
<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文件


?
1
2
3
4
5
6
7
8
9
<? 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 可以把图片进行层叠,实现类似的效果!

?
1
2
3
4
5
6
7
8
9
<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>

    <item android:id="@+android:id/background"     
          android:drawable="@drawable/detail_score_bg" /> 这个是背景图片,也就是灰色的星星 
    <item android:id="@+android:id/secondaryProgress" 
          android:drawable="@drawable/detail_float" />这个是半个红色星星,进度是0.5时使用 
    <item android:id="@+android:id/progress" 
          android:drawable="@drawable/detail_score_press" />    这个是整个红色星星 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值