如何在android评级栏

时间:2015-12-31 07:03:04

标签: android

我正在做一个应用程序,其中我的要求是评级栏应该总是有触摸事件给予评级但它不应该有拖动功能给予评级所以有什么办法,如何在Android评级栏中禁用拖动功能。

1 个答案:

答案 0 :(得分:3)

要停用拖动功能,请在onMotionEvent()上实施RatingBar侦听器。然后,获取ACTION_DOWN上的x坐标,并与ACTION_UP的x坐标进行比较。如果存在很大差异(Drag发生),则返回true以处理事件;否则返回false。

示例:

RatingBar bar = (RatingBar) findViewById(R.id.rating_bar);
bar.setOnTouchListener(new View.OnTouchListener()
{
    private float downXValue;

    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        if (event.getAction() == MotionEvent.ACTION_DOWN)
        {
            downXValue = event.getX();
            return false;
        }

        if(event.getAction() == MotionEvent.ACTION_MOVE)
        {
            // When true is returned, view will not handle this event.
            return true;
        }

        if(event.getAction() == MotionEvent.ACTION_UP)
        {
             float currentX = event.getX();
             float difference = 0;
             // Swipe on left side
             if(currentX < downXValue)
                 difference = downXValue - currentX;
             // Swipe on right side
             else if(currentX > downXValue)
                 difference = currentX - downXValue;

             if(difference < 10 )
                 return false;

             return true;
         }
         return false;
     }
});