坑爹的RatingBar
Android中的RatingBar控件,设置矮了、窄了就显示不全。网上遍寻自定义大小的文章,简单的问题看得一头雾水,屡试不得。
突然灵光一现,原来是自己傻了,其实小星星都是系统的或者自备的单个图片,安卓的方法并没去根据宽高同步拉伸,想要符合尺寸的小星星还是得自己先做好。
下边是方法记录,备忘:
1.拉伸好想要尺寸的小星星:满的,空的各一张(别指望系统帮你同步拉伸):对应文件 rating_full.png,rating_empty.png
2.copy到drawble图片文件夹
3.在Value-style,xml文件中设置好样式
<style name="my_ratingBar" parent="Base.Widget.AppCompat.RatingBar"> <item name="android:progressDrawable"> @drawable/my_ratingbar</item> <item name="android:minHeight">28dip</item> <item name="android:maxHeight">28dip</item> </style>
4.在drawble文件夹下新建文件my_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_empty" /> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/rating_empty" /> <item android:id="@android:id/progress" android:drawable="@drawable/rating_full" /> </layer-list>
5.在布局文件中直接设置style就行了。
<RatingBar android:id="@+id/ratingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/my_ratingBar" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
随便记录一下RatingBar常用属性:
android:isIndicator:是否用作指示,用户无法更改,默认false
android:numStars:显示多少个星星,必须为整数
android:rating:默认评分值,必须为浮点数
android:stepSize: 评分每次增加的值,必须为浮点数
setNumStars() 设置最多显示星星的个数。等同于xml中的android:max=""
setRating() 设置要显示的星星的个数。等同于xml中的android:rating=""
以前的是程序员的老板,现在是末路出家的程序员小白。