2016-10-11 3 views
0

Я использую ViewPager для потока мастера в приложении, и я хочу отключить переключатели страниц с любого пользовательского ввода (How do disable paging by swiping with finger in ViewPager but still be able to swipe programmatically?).Android-эмулятор и ViewPager

Недавно я обнаружил, что, когда я запускаю приложение в эмуляторе, я все еще могу прокручивать страницу с помощью клавиш клавиатуры и клавиатуры вправо и вправо.

Можно ли его отключить? Это реальное событие, которое может произойти на реальном устройстве?

ответ

1

Я не могу воспроизвести вашу проблему в проекте на основе ViewPager, запущенном на эмуляторе, но поскольку вы уже расширяете ViewPager, вы можете попробовать переопределить приведенный ниже метод, чтобы игнорировать правый и левый клавиши.

Непроверенные:

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

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

Я бы предположил, что это возможно на оборудовании, если пользователь имеет физическую клавиатуру, подключенную.

Update

Попробуйте это в расширенном классе:

@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

Гэри, решение не работает –

+0

Попробуйте добавить точку останова в ViewPager.executeKeyEvent перед arrowScroll() вызывает. Если он сломается, проверьте стек вызовов, чтобы увидеть, где лучше всего переопределить событие. –

+0

Спасибо! Это был именно 'executeKeyEvent' с' DPAD_ * ' –