今天做一个评分的功能,但是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>

<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" /> 这个是整个红色星星

如有问题请留言,若转载注明出处。



更多相关文章

  1. Lottie开源库实现Android动画效果
  2. android实现拖动效果
  3. ViewPager添加动画效果(一行代码)
  4. Android 上下滚动的新闻效果
  5. Android 实现图片的放大缩小及左右滑动(说明书效果)
  6. Android 实现图片闪烁效果
  7. Android 震动示例--心跳效果

随机推荐

  1. 使用Genymotion调试出现错误INSTALL_FAIL
  2. Android录制声音(二)录音输输出格式
  3. Android 7.1 修改副屏显示DPI(补充旋转补
  4. Android WebView基本使用
  5. Android打开或者关闭软键盘的解决方案
  6. 浅谈Android os体系架构
  7. Mac Android(安卓)Studio快捷键整理
  8. 【Android】APP_ALLOW_MISSING_DEPS=true
  9. android上传文件到服务器(图片、文本等)
  10. android 图片轮播(自动循环轮播)