2013-08-05 14 views
5

Jak ustawić ostrość na przycisk, ale bez ustawienia setFocusableInTouchMode na true?Ustaw fokus na przycisk

raz pierwszy próbowałem:

button.requestFocus(); 

To po prostu nie działa. Następnie wypróbowałem to:

button.setFocusableInTouchMode(true); 
button.requestFocus(); 

Problem polega na tym, że podświetla przycisk. Nie chcę, aby przycisk był podświetlony w trybie dotykowym. Po prostu chcę, aby przycisk został wybrany, gdy użytkownik kliknie klawisz Enter lub klawisz Tab.

Aby wyjaśnić, chcę po prostu pierwszy przycisk, aby rozpocząć z fokusem, gdy nie jest w trybie dotykowym.

Odpowiedz

0

To rozwiązuje problem doskonale:

layout.getViewTreeObserver().addOnTouchModeChangeListener(new ViewTreeObserver.OnTouchModeChangeListener() 
{ 
    public void onTouchModeChanged(boolean isInTouchMode) 
    { 
     if (!isInTouchMode) 
      button.requestFocus(); 
    } 
}); 
1

Chyba, że ​​chcesz to:

button.setOnKeyListener(new OnKeyListener() { 

      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       switch (keyCode) { 
       case KeyEvent.KEYCODE_ENTER: 
        // HIT THE ENTER KEY 
        break; 
       case KeyEvent.KEYCODE_TAB: 
        // HIT THE TAB KEY 
        break; 
       } 
       return false; 
      } 
     }); 

jeśli nie chcesz, aby ten mógł być jasne? Przepraszam za mój angielski.

+0

nie zrobi, ponieważ istnieje kilka przycisków, które można podjąć, ostrość. Po prostu chcę, aby pierwszy przycisk zaczynał się od fokusa. Sądzę, że mógłbym zapisać fokus w zmiennej i zastąpić klawisz Enter i wszystkie naciśnięcia klawiszy wszystkich klawiszy, które mogłyby zmienić ostrość. Musi być lepszy sposób na skupienie się na fokusie. –

Powiązane problemy