在Android中,Onclick属性不适用于RatingBar

时间:2016-05-19 09:30:57

标签: android android-studio

当我点击App中的RatingBar时,以下代码无效。请帮忙......

注意:我已将RateBar Onclick的属性设置为rate。

public void rate(View v) {
    RatingBar r1 = (RatingBar)findViewById(R.id.ratingBar);
    Toast.makeText(MainActivity.this, String.valueOf(r1.getRating()) ,Toast.LENGTH_SHORT).show();

}

Rating Bar and Properties Panel

2 个答案:

答案 0 :(得分:1)

似乎您希望每当用户设置评分时都会收到通知,因此您需要OnRatingBarChangeListener而不是OnClickListener

ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

    @Override
    public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {

    }
});

注意:<{strong> onClick OnClickListener接口的方法被另一个名为performClick()的方法调用。此方法在View类中声明,因此click事件all在View类中处理。但是RatingBar 会覆盖内部触摸事件回调,并且不允许通知根类(即View)。因此,基础View无法再检测到点击事件。不过,解决方法可能在this post

答案 1 :(得分:0)

Onclick属性不起作用的原因是RatingBar覆盖onTouchEvent()。所以永远不会调用ratingBar.setOnClickListener()

使用OnTouchListener代替onClickListener