2010-07-17 20 views
7

Quiero reemplazar el comportamiento de la ENTER tecla del teclado virtual para que:cómo reemplazar el comportamiento de las teclas <ENTER> del teclado virtual en Android

  • cuando hay más campos de la pantalla, que 'pestañas' al siguiente campo
  • cuando es el último campo de la pantalla, se ejecuta la acción predeterminada de la pantalla

he estado jugando con las opciones IME y etiquetas, pero sólo don no se lo que quiero. Alguien tiene alguna sugerencia?

Respuesta

9

Con ayuda en otro foro, encontré la manera de hacerlo.

Para que sea reutilizable, he creado mi propia clase de diálogo súper que contiene 2 OnKeyListener objetos y un resumen presentar método:

public abstract class MyAbstractDialog extends Dialog { 

/** 
* OnKeyListener that puts the focus down when the ENTER key is pressed 
*/ 
protected View.OnKeyListener onEnterFocusDown = new View.OnKeyListener() { 

       @Override 
       public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
          (keyCode == KeyEvent.KEYCODE_ENTER)) { 
           v.requestFocus(View.FOCUS_DOWN); 
         return true; 
       } 
         return false; 
       } 
     }; 

/** 
* OnKeyListener that submits the page when the ENTER key is pressed 
*/ 
protected View.OnKeyListener onEnterSubmitView = new View.OnKeyListener() { 

       @Override 
       public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
          (keyCode == KeyEvent.KEYCODE_ENTER)) { 
           submitView(v); 
         return true; 
       } 
         return false; 
       } 
     }; 
     protected abstract void submitView(View v); 

} 

Ahora en el Dialog puedo usar estos objetos para establecer en mis campos:

// make the ENTER key on passwordField1 put the focus on the next field 
passwordField1.setOnKeyListener(onEnterFocusDown); 

// make the ENTER key on passwordField2 submit the page 
passwordField2.setOnKeyListener(onEnterSubmitView); 
+0

disculpe por el diseño horrible, no sé por qué no funcionó de la manera que yo quería – Aak

Cuestiones relacionadas