android中的评分栏 - 重置值

时间:2017-04-18 07:19:35

标签: android ratingbar

我使用评级栏将字段标记为收藏。用户应该能够在将来的某个时间取消标记。但是一旦我设置它,点击监听器就不能处理该项目。

XML代码

<RatingBar
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numStars="1"
android:stepSize="1"
android:id="@+id/fav"/>

JAVA代码

fav.setOnClickListener(new View.OnClickListener(){ //fav is a ratingbar
        public void onClick(View view){
            favRest = !favRest; //A boolean variable which is set/reset each time it is clicked
            if(favRest)
            {   fav.setRating(1.0f);
                addFav(uname,hotelName);

            }
            else{
                fav.setRating(0.0f);
                removeFav(uname,hotelName);

            }

        }
    });

1 个答案:

答案 0 :(得分:2)

rate clear后,使用RatingBar上的触摸无法0 to 5.0。您只能从1更改费率值。clear/reset

Clear/Reset费率值,您必须使用其他操作,例如添加Button Button

reset点击监听器中,您可以使用setRating(0.0)

resetButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Reset ratingBar.setRating(0.0); } }); 评分值
RatingBar

<强>更新:

android:numStars="1",您正在使用android:stepSize="1"rate 1。因此,一旦rate 0使用RatingBar上的触摸<{1}}就无法ImageView

从我的观点来看:

  1. 您可以使用RatingBar代替favorite
  2. unfavorite文件夹中为res/drawableImageView添加两个不同的图标
  3. 根据favRest值检查,将所需图标设置为<ImageView android:layout_width="24dp" android:layout_height="24dp" android:id="@+id/fav" /> imageview = (ImageView) findViewById(R.id.fav); fav.setOnClickListener(new View.OnClickListener(){ //fav is a ratingbar public void onClick(View view){ favRest = !favRest; //A boolean variable which is set/reset each time it is clicked if(favRest) { imageview.setImageResource(R.drawable.icon_favorite); addFav(uname,hotelName); } else { imageview.setImageResource(R.drawable.icon_unfavorite); removeFav(uname,hotelName); } } });
  4. 试试这个:

    {{1}}

    希望这会有所帮助〜