2016-10-11 2 views
0

Ich verwende ViewPager für einen Assistenten-Flow in der Anwendung, und ich möchte Seitenschalter von jeder Benutzereingabe (How do disable paging by swiping with finger in ViewPager but still be able to swipe programmatically?) deaktivieren.Android-Emulator und ViewPager

Kürzlich entdeckte ich, dass, wenn ich die Anwendung in einem Emulator ausführen kann ich immer noch Seite mit PC-Tastatur nach links und rechts Pfeiltasten wischen.

Kann ich es deaktivieren? Ist es ein echtes Ereignis, das auf einem echten Gerät passieren kann?

Antwort

1

Nun, ich kann nicht reproduzieren Ihr Problem in einem ViewPager-basierten Projekt auf dem Emulator ausgeführt, aber da Sie bereits die ViewPager erweitern, können Sie versuchen, die Methode unten ignorieren die rechte und linke Tasten drücken.

Ungeprüfte:

@Override 
    public boolean onKeyPreIme(int keyCode, KeyEvent event) { 

     switch(keyCode) { 
     case KeyEvent.KEYCODE_DPAD_RIGHT: 
     case KeyEvent.KEYCODE_DPAD_LEFT: 
      return true; 
     } 
     return false; 
    } 

Ich könnte mir vorstellen, dass dies möglich auf Hardware ist, wenn der Benutzer eine physische Tastatur hat verbunden.

aktualisieren

Versuchen Sie dies in Ihrer erweiterten Klasse:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    switch(event.getAction()) { 
     case KeyEvent.KEYCODE_DPAD_RIGHT: 
     case KeyEvent.KEYCODE_DPAD_LEFT: 
      return true; 
    } 
    return super.dispatchKeyEvent(event); 
} 
+0

Gary, die Lösung nicht –

+0

Versuchen funktioniert ein einen Haltepunkt in ViewPager.executeKeyEvent Zugabe vor dem arrowScroll() aufruft. Wenn es dort bricht, überprüfen Sie den Aufruf-Stapel, um zu sehen, wo der beste Ort ist, um das Ereignis zu überschreiben. –

+0

Danke! Es war genau 'executeKeyEvent' mit' DPAD_ * ' –

Verwandte Themen