[英]How to set rating bar to minimum one star?
我有一个要求给一个用户评分最少一颗星,然后评分应该增加到 0.5。 但我的问题是,用户不应将星级的最低评分更改为 0.5 或 0。默认评分应为 1。 请帮助解决这个问题并等待您的早期回复。 我也尝试通过链接中的侦听器实现,但完全使用我的代码中的逻辑进行构造:
ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
}
});
ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
if(rating<1.0f)
ratingBar.setRating(1.0f);
}
});
如果ur的值为String,则设置Rating为float值:
ratingBar.setRating(Float.parseFloat(result));
ratingbar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
ratingBar.setRating(Float.parseFloat(""+Math.ceil(rating)));
}
}
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
Toast.makeText(RateUsProductActivity.this,"Rating :- "+String.valueOf(rating),Toast.LENGTH_SHORT).show();
if(rating<1.0f)
ratingBar.setRating(1.0f);
}
});
当评分小于1时,会自动设置评分1
祝您编码愉快!
设置 OnRatingBarChangeListener 会起作用,但此解决方案的问题是,如果您尝试将评级拖到 1 星以下,它将显示零星一秒钟,然后才会跳回理想的 1 星。 为了避免这种“闪烁”行为,我建议继承RatingBar
并覆盖方法getMin
。 例如:
class MinStarRatingBar @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : AppCompatRatingBar(context, attrs, defStyleAttr) {
private var minStars = 0
fun setMinimumStars(minStars: Int) {
this.minStars = minStars
}
override fun getMin(): Int {
return minStars
}
}
然后只需使用ratingBar.setMinimumStars(/*your value*/)
注意:我不知道为什么,但是setMin
方法不起作用。 它至少需要 Api 26 才能运行,并且更改了 Ratinbar 中的更改步骤,并且由于某种原因不影响星星的最小值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.