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=""