我有以下RatingBar:
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:numStars="5"
android:max="5"
android:stepSize="1.0"
android:layout_marginTop="12dp"/>
当我按下星形的左侧部分时 - 它被选中,但是当我按下右侧部分时 - 选择了以下星形。我需要点击的星星被选中,无论我点击哪一部分。 请帮助我理解错误。
答案 0 :(得分:13)
这可能是RatingBar
扩展ProgressBar
的一个令人遗憾的副作用,int
内部使用ceil
进度舍入(而不是float
)来自{int
1}}寻找stepSize
进度的位置。我找到的最佳解决方案是将您的0.01
设置为1
而不是rb.setOnRatingBarChangeListener( new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged( final RatingBar ratingBar, final float rating, final boolean fromUser ) {
if ( fromUser ) {
ratingBar.setRating( Math.ceil(rating) );
}
}
});
,然后设置
while