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

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

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 hacer que Android EditText se expanda verticalmente cuando está lleno
  • ¿Cómo puedo cambiar el editor?
  • EditText en ListView necesita ajustarResize pero tiene error de foco perdidoso
  • En android, ¿cómo mostrar asterisco (*) en lugar de puntos en EditText que tiene tipo de entrada como palabra clave de texto?
  • Impedir introducir la clave en EditText pero todavía mostrar el texto como multi-line
  • EditText campo es necesario antes de pasar a otra actividad
  • Puedo obtener Editar texto dejar evento
  • Estilo EditarTexto de contenido 'sobre la marcha'?
  • Objetos EditText múltiples en AlertDialog
  • Copiar y pegar imagen en Edittext
  • androide. Visualización de enfoque automático en el inicio de la actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.