如何在android中禁用双击旋转器?

时间:2016-08-05 12:16:45

标签: android spinner android-spinner double-click

双击旋转器显示2个菜单。如何禁用双击?

尝试添加TouchListeners,如下所示

private static final int CLICK_DELAY = 500;
private long lastMenuClickTime = 0;

actionsSpinner.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
          if (event.getAction() == MotionEvent.ACTION_DOWN) {
            if (SystemClock.elapsedRealtime() - lastMenuClickTime > CLICK_DELAY) {
              lastMenuClickTime = SystemClock.elapsedRealtime();

              return false;
            }
          }
          return true;
        }
      });

但这会增加执行点击操作的延迟,主要问题是在 CLICK_DELAY 无法正常工作后首先点击。

1 个答案:

答案 0 :(得分:1)

这是你可以做的

 public static void disableTouch(final View v, long timeInMiliSec) {
        v.setEnabled(false);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                v.setEnabled(true);
            }
        }, timeInMiliSec);
    }

此功能禁用指定时间的视图

示例:

actionsSpinner.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
      if (event.getAction() == MotionEvent.ACTION_DOWN) {
          disableTouch(actionsSpinner, CLICK_DELAY)
          //do your other stuff here 

          return false;
        }
      return true;
    }
  });