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

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

时间: 2024-10-12 19:28:56

RatingBar的自定义的相关文章

IOS-一步一步教你自定义评分星级条RatingBar

本文转载至 http://blog.csdn.net/hanhailong726188/article/details/42344131 由于项目的需要,需要设计能评分.能显示评分数据的星级评分条,但是IOS上好像没有这个控件,Android是有RatingBar这个控件的(又发现一个IOS不如Android好的),那就只能自定义了,在网上也找了相关的例子,发现都是很老的版本了,非ARC版本的,而且不能评分成0分,还没有indicator效果,于是我自己重新写了一个控件,命名为RatingBar

android评分条RatingBar自定义设置

RatingBar为评分条控件,默认效果为若干个绿色的星星,如果想将其换成其他自定义图片就要自定义它的style.首先是布局文件: 1 <RatingBar android:id="@+id/app_ratingbar" style="@style/MyRatingBar" 2 android:layout_marginTop="4dip" android:layout_width="wrap_content" 3 an

IOS-一步一步教你自定义评分星级条RatingBar ——转载的

由于项目的需要,需要设计能评分.能显示评分数据的星级评分条,但是IOS上好像没有这个控件,Android是有RatingBar这个控件的(又发现一个IOS不如Android好的),那就只能自定义了,在网上也找了相关的例子,发现都是很老的版本了,非ARC版本的,而且不能评分成0分,还没有indicator效果,于是我自己重新写了一个控件,命名为RatingBar 先上一张我们做之后的效果图: 第一步: 写一个继承自UIView的RatingBar子控件 第二步: 声明一个RatingBar修改评分

android 自定义ratingbar 图片显示不全的解决方案

在res/style中自定义评分条: <!-- 自定义评分条 --> <style name="roomRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/rating_bar</item> <item name="android:mi

Android RatingBar 自定义样式

Android RatingBar 自定义样式 1.先定义Style: <style name="RadingStyle" parent="@android:style/Widget.RatingBar">     <!-- 定义星星图片 -->     <item name="android:progressDrawable">@drawable/layer_live_rating_bar</item&

自定义实现RatingBar

RatingBar是Android中常用的一个组件,但是发现一个问题就是不同系统版本的RatingBar表现的不太一样 前面的是在Android 2.3版本的表现形式,后面的是在Android 4.0以上版本的表现形式,但是在我们常见的app中一般都要求体验风格要统一,这就要求我们自定义来实现RatingBar的图片 首先要找到要用的图片,其实我们常见的Android图标在sdk中就可以找到位置是:android-sdk-windows\platforms\android-20\data\res

Android RatingBar自定义替换系统图片

1.自定义替换提醒☆图片,准备两个图片添加到系统中去:如下:        在drewable下定义一个图片资源ratingbar_drawable.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res

Android开发:自定义的RatingBar图标显示不全的解决方案

想自定义一个RatingBar,网上有很多的教程,一步步的定义好了,运行,突然发现显示不完整,如下: 很郁闷,找不到原因,网上搜索,发现了一大堆的答案,都是解决不了,有一个办法是把图片的分辨率降低,如这个答案说的 http://stackoverflow.com/questions/12382632/how-to-set-the-custom-size-of-the-stars-in-ratingbar 可是,为什么别人运行的好好的呢,突然灵感一现,把自定义RatingBar的Drawable资

自定义RatingBar的显示样式

RatingBar是我们在做项目时常用到的一个控件View,用来表示评价的指数.是五角星样式的,但自带的样式有时候在我们项目中显示不协调,我们就要自定义RatingBar的显示样式. 先还是在布局页面中写上控件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&quo