2016-08-05 24 views
0

Durch doppeltes Antippen von Spinner werden 2 Menüs angezeigt. Wie deaktiviere ich das Doppeltippen?Wie deaktivieren Sie Doppelklick auf Spinner in Android?

Versuchte TouchListeners Zugabe wie unten

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

Aber dies summiert sich eine gewisse Verzögerung bei der Ausführung von Klickoperation und die Hauptproblem ist, klicken Sie zunächst selbst nach CLICK_DELAY funktioniert nicht gezeigt. Diese

Antwort

1

ist, wie Sie tun können,

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

Diese Ansicht Funktion deaktivieren für bestimmte Zeit

Beispiel:

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

wir können nicht OnClickListener in den Spinner (Es ist kein Knopf) also kann ich nicht disableTouch() beim Klick auf Spinner einhaken! – kumar

+0

Bearbeitete Antwort, Sorry, das war ein Fehler, den Sie einen Parameter übergeben können, um so lange wie seine Ansicht zu funktionieren. Rufen Sie einfach 'disableTouch()' in Ihrem 'onTouch() ' –

+0

Der Punkt ist, wenn Sie disableTouch() aufrufen werden? Wenn wir es nach der Erstellung von Spinner aufrufen, ist es nutzlos, da nach CLICK_DELAY von Zeit nach der Erstellung der Spinner aktiviert wird. Sie können es nicht mit onClickListener aufrufen, da Spinner es nicht unterstützt! – kumar