studio requestfocus quitar edittext change android android-edittext setfocus

android - requestfocus - KeyCode_Enter al siguiente edittext



quitar focus edittext android studio (5)

En el texto de edición, después de escribir la tecla ''Enter'', el sistema crea una nueva línea en su interior. Me gustaría centrarme en el siguiente texto de edición, no hay una nueva línea. como codificar? mi código en xml está 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 puedo codificar código clave 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; } });


Considere las opciones IME, buena descripción aquí http://androidcookbook.com/Recipe.seam;jsessionid=C824437B48F346E23FBE5828969029B4?recipeId=422 y documentación aquí http://developer.android.com/reference/android/widget/TextView.html#attr_android:imeOptions .

Lo único que necesita es agregar el atributo android: imeOptions = "actionNext" en cada EditText. El teclado aparece con la tecla Siguiente donde antes estaba Enter y permite navegar al siguiente EditText.

Pero el orden de "actionNext" es de arriba a abajo. Por ejemplo, si tiene 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 se enfocan Deberías arreglarlo 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


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á tiempo en el futuro :)

No debes usar android: singleLine = "true", ya que está en desuso. Esto es lo que dice la documentación al respecto:

Este atributo está en desuso y es reemplazado por el indicador textMultiLine en el atributo inputType. Tenga cuidado al modificar los diseños existentes, ya que el valor predeterminado 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 de singleLine y inputType, las marcas de inputType anularán el valor de singleLine).


Ni siquiera tienes que usar OnKeyListener . Simplemente agregue línea android:singleLine="true" a su EditText . Después de esta operación, EditText comporta exactamente como usted quiere. 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" />

resuelve el problema


Solo establezca el número máximo de líneas en el cuadro EditText en el archivo de diseño xml: android:maxLength="1"


Tienes que usar el método requestFocus . En tu caso será algo como:

tCNPCode.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if(keyCode == 66) { txtCNPCode.requestFocus(); } return false; } });