2016-08-05 4 views
0

スピナーをダブルタップすると2つのメニューが表示されます。ダブルタップを無効にする方法は?アンドロイドでスピナーのダブルタップを無効にするにはどうすればよいですか?

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; 
     } 
     }); 

以下のように

TouchListenersを追加しようとしたが、これは、クリック操作を実行するには、いくつかの遅延を追加し、主な問題は、CLICK_DELAYは動作しませんした後も最初のクリックです。

答えて

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); 
    } 

を行うことができます:我々はスピナー(そのないボタン)にonClickListener追加することはできません

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; 
    } 
    }); 
+0

私はスピナーのクリックでdisableTouch()をフックすることはできません! – kumar

+0

編集された回答、ご迷惑をおかけして申し訳ございません。あなたの 'onTouch()'で 'disableTouch()'を呼び出してください。 –

+0

disableTouch()を呼び出すのはポイントですか?スピナーを作成した後に呼び出すと、作成後CLICK_DELAY後にスピナーが有効になるため、使用はありません。あなたはそれをサポートしていないので、あなたはonClickListenerでそれを呼び出すことはできません! – kumar

関連する問題