RatingBar numStars无效
2020-12-11 本文已影响0人
王家匀匀
RatingBar 使用办法:
使用 rating 代替numStars。重点设置
- max 属性控制最大个数;
- stepSize 步长,决定一次最少选几颗星星,有的app支持0.5;
- 宽度要设置成 wrap_content。否则 max 无效;
- 设置星星默认选中个数,使用rating ,numStars无效;
rb.rating = 5.0f - 设置style,在style中设置2种状态drawable.
RatingBar 星星间无法设置间距。如果要求间距,可以在drawable中设置左右相同间距(2星间距/2)。 - setIsIndicator(true) 表示不能操作点击和滑动,默认是false。(设置RatingBar能否被用户改变)
layout:
<RatingBar
android:id="@+id/rb"
style="@style/RatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="12dp"
android:isIndicator="false"
android:numStars="5"
android:stepSize="1"
android:max="5"
/>
style:
<style name="RatingBar" parent="Base.Widget.AppCompat.RatingBar">
<!--修改默认图片-->
<item name="android:progressDrawable">
@drawable/rating_bar
</item>
<!--修改默认大小-->
<item name="android:maxHeight">26dp</item>
<item name="android:minHeight">26dp</item>
<item name="android:minWidth">26dp</item>
<item name="android:maxWidth">26dp</item>
</style>
drawable/rating_bar.xml:
设置progress为选中的drawable,其它为没有选中的drawable.
<?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/pop_windows_icon_nor" />
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/pop_windows_icon_nor" />
<item
android:id="@android:id/progress"
android:drawable="@drawable/pop_windows_icon_sel" />
</layer-list>
RatingBar.setIsIndicator(boolean)源码。注释表示 设置RatingBar能否被用户改变
/**
* Whether this rating bar should only be an indicator (thus non-changeable
* by the user).
*
* @param isIndicator Whether it should be an indicator.
*
* @attr ref android.R.styleable#RatingBar_isIndicator
*/
public void setIsIndicator(boolean isIndicator) {
mIsUserSeekable = !isIndicator;
if (isIndicator) {
setFocusable(FOCUSABLE_AUTO);
} else {
setFocusable(FOCUSABLE);
}
}