[英]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.