2010-10-01 111 views
4

我试图显示RatingBar视图,只能显示一个星级评分,或者不显示星星。这看起来很琐碎...单星级评分条码

我的RatingBar就像这样定义:

我的观点实现OnRatingBarChangeListener和OnTouchListener

我OnRatingBarChange处理程序没有代码。 我OnTouch处理程序看起来像这样:

@Override 
public boolean onTouch(View v, MotionEvent event) 
{ 
    if(event.getAction() == MotionEvent.ACTION_DOWN) 
    { 
     if(this.mRating.getRating() == 0) 
     { 
      this.mRating.setRating(1); 
     } 
     else 
     { 
      this.mRating.setRating(0); 
     } 
     return true; 
    } 
    return false; 
} 

无论怎样,onTouch事件没有设置等级回零成功。这看起来太小了。我究竟做错了什么?

谢谢!

回答

15

考虑使用ToggleButtonbtn_star股票drawable。举例如下:

<ToggleButton 
     android:button="@android:drawable/btn_star" 
     android:background="@android:color/transparent" 
     android:textOn="" 
     android:textOff="" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
0

RatingBar从SeekBar扩展而来,实际上监听器需要一个幻灯片操作。因此,当只有一颗星时,RB不能被设置为0(或不是为了这个目的)。用于这种类型的功能的合适的小部件(这里并不令人意外)是ToggleButton。

我有同样的问题,试图使用一个星级RatingBar作为最喜欢的按钮。但是ToggleButton正是你需要这种类型的东西。

这是我为ToggleButton实现的。 (_favourited布尔专门用于我的代码中的东西,我现在不记得了)

favourite_button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    if (!_favourited) { 
     // Do stuff     
     _favourited = true; 
    } else { 
     // Do stuff     
     _favourited = false; 
    } 
}});