2013-08-05 14 views
5

Wie kann ich den Fokus auf eine Schaltfläche einstellen, ohne setFocusableInTouchMode auf true zu setzen?Fokus auf eine Schaltfläche setzen

Ich versuchte zunächst, dies:

button.requestFocus(); 

, die einfach nicht funktioniert. Ich habe dann folgendes versucht:

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

Das Problem ist, es hebt die Schaltfläche hervor. Ich möchte nicht, dass die Schaltfläche im Berührungsmodus hervorgehoben wird. Ich möchte einfach, dass die Schaltfläche ausgewählt wird, wenn der Benutzer die Eingabetaste oder die Tabulatortaste drückt.

Um zu verdeutlichen, möchte ich einfach die erste Schaltfläche mit Fokus starten, wenn nicht im Touch-Modus.

Antwort

0

Dies löst das Problem perfekt:

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

Ich denke, Sie wollen diese:

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

, wenn Sie dies nicht wünschen, können Sie klar sein? Entschuldigung für mein Englisch.

+0

Dies wird nicht tun, weil es mehrere Schaltflächen, die den Fokus nehmen. Ich möchte einfach, dass die erste Schaltfläche mit dem Fokus beginnt. Ich denke, ich könnte den Fokus in einer Variablen speichern und die Eingabetaste und alle Tastendrücke aller Tasten außer Kraft setzen, die den Fokus ändern könnten. Es muss einen besseren Weg geben, den Fokus zu handhaben. –

Verwandte Themen