KeyCode_Enter al próximo edittext
En edittext, después de teclear 'Enter', el sistema hará una nueva línea dentro de él. Me gustaría centrarme en el próximo edittext, no hay nueva línea. Cómo codificar Mi código en xml está por debajo
<EditText android:id="@+id/txtNPCode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" android:layout_alignLeft="@+id/lblNPCode" android:layout_below="@+id/lblNPCode" android:layout_centerHorizontal="true"/> <EditText android:id="@+id/txtCNPCode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" android:layout_alignLeft="@+id/lblCNPCode" android:layout_below="@+id/lblCNPCode" android:layout_centerHorizontal="true"/>
También código de la llave del capitán en setOnKeyListener
- La sugerencia EditarTexto no se muestra
- ¿Cómo puedo activar una acción cuando el usuario ha ingresado?
- Cómo ocultar el teclado cuando haga clic fuera de editText?
- ¿Cómo puedo hacer clic en los vínculos de un EditText?
- Cómo validar el código ussd para la comprobación del saldo
tCNPCode.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == 66) { Toast.makeText(S_PCode.this, "Enter Key", Toast.LENGTH_LONG).show(); //tNPCode.setFocusable(true); } return false; } });
- NullPointerException en findViewById () en android
- Agregar cadena no editable a EditText
- Cómo establecer el tipo de entrada como contraseña a edittext programatically
- Editar entrada de texto con patrón android
- Añadir carácter automáticamente en EditText después de 6 letras
- ¿Hay una manera de permitir que el usuario seleccione el texto de muchos `EditText`s en una fila (que están en ListView)?
- Cómo establecer algunas imeOptions mediante programación
- el cursor en la pista EditText no comienza desde la derecha para el árabe
Tienes que usar el método requestFocus
. En su caso será algo así como:
tCNPCode.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if(keyCode == 66) { txtCNPCode.requestFocus(); } return false; } });
Usted ni siquiera tiene que usar OnKeyListener
. Simplemente añada línea android:singleLine="true"
a su EditText
. Después de esta operación EditText
comporta exactamente como usted desea. Por lo tanto, en su caso particular:
<EditText android:id="@+id/txtNPCode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" android:layout_alignLeft="@+id/lblNPCode" android:layout_below="@+id/lblNPCode" android:layout_centerHorizontal="true" android:singleLine="true" /> <EditText android:id="@+id/txtCNPCode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" android:layout_alignLeft="@+id/lblCNPCode" android:layout_below="@+id/lblCNPCode" android:layout_centerHorizontal="true" />
Soluciona el problema.
La mejor manera es usar una de las opciones para inputType, por ejemplo: android:inputType="textPersonName"
Esto logrará el efecto deseado. Echa un vistazo a las otras opciones también, te ahorrará algún tiempo en el futuro 🙂
No debes usar android: singleLine = "true", ya que está obsoleto. Esto es lo que las documentaciones dicen al respecto:
Este atributo está obsoleto y se sustituye por el indicador textMultiLine en el atributo inputType. Tenga cuidado cuando altere diseños existentes, ya que el valor por defecto de singeLine es falso (modo multilínea), pero si especifica cualquier valor para inputType, el valor predeterminado es el modo de una sola línea. (Si se encuentran los atributos singleLine y inputType, los flags inputType anularán el valor de singleLine.).
Considere las opciones de IME, buena descripción aquí http://androidcookbook.com/Recipe.seam;jsessionid=C824437B48F346E23FBE5828969029B4?recipeId=422 y la documentación aquí http://developer.android.com/reference/android/widget/TextView.html#attr_android : ImeOptions .
Lo único que necesita es añadir atributo android: imeOptions = "actionNext" en cada EditText. El teclado aparece con una tecla Next en donde Enter se utiliza y permite navegar hasta el siguiente EditText.
Pero el orden de "actionNext" es de arriba a abajo. Por ejemplo, si tiene un diseño horizontal:
<LinearLayout android:orientation="horizontal" > <EditText android:id="@+id/et1" android:imeOptions="actionNext" /> <EditText android:id="@+id/et2" android:imeOptions="actionNext" /> </LinearLayout>
Et2 nunca consigue el foco. Debe corregirlo en el código:
et1.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { switch (actionId) { case EditorInfo.IME_ACTION_NEXT: boolean result = false; TextView v1 = (TextView) v.focusSearch(View.FOCUS_RIGHT); if (v1 != null) result = v1.requestFocus(View.FOCUS_RIGHT); else if (!result) { v1 = (TextView) v.focusSearch(View.FOCUS_DOWN); if (v1 != null) result = v1.requestFocus(View.FOCUS_DOWN); } if (!result) v.onEditorAction(actionId); break; default: v.onEditorAction(actionId); break; } return true; } });
Enlace original: https://groups.google.com/forum/?fromgroups=#!topic/android-developers/OykOG6XtE8w
Simplemente establezca el número máximo de líneas en el cuadro EditText
en el archivo de diseño xml: android:maxLength="1"
- Cómo colapsar completamente un SearchView después de un elemento seleccionado?
- Eclipse ejecuta el modo de depuración incluso cuando hago clic en "ejecutar"