4

我想在滑动时读取评分栏值以更改文本评分值(差、好等)我正在使用setOnRatingBarChangeListener它,但它在用户从栏松开手指后才起作用。我也尝试过onDragListener,但没有成功。当然我有android:isIndicator="false"xml,但没有变化。

是否有任何其他侦听器,用于立即获得评分的代码 - 因为在滑动时正确重绘了星星。提前致谢

罗马

4

2 回答 2

2

您必须扩展RatingBar、覆盖onTouchEvent()和检查MotionEvent.ACTION_MOVE事件。

public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_MOVE:
            if (isPressed()) {
                final float x = event.getX();
                final float THRESHOLD = 1.0;
                if (Math.abs(x - prevX) > THRESHOLD) {
                   getProgress(); // Now compare with previous progress
                }
                prevX = x;
            }
    }
}
于 2012-12-04T13:32:26.603 回答
1

该代码在 Log cat 上打印当前的 rating 值,而它正在滑动。

final RatingBar ratingBar = (RatingBar) findViewById(R.id.rating_bar);

ratingBar.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_MOVE:
                    Log.d("LOG", String.format("%f", ratingBar.getRating());

                }
            return false;
        }
});
于 2016-04-20T19:06:04.593 回答