Cómo forzar el enfoque para editar el texto
He leído alrededor de las preguntas sobre cómo establecer un objeto para centrarse sin embargo no puedo encontrar una respuesta a lo que estoy tratando de hacer.
Usando el On Focus Listener He hecho lo siguiente:
- Problema de enfoque con múltiples EditTexts
- Android WebKit enfocado textarea no dibujar imagen de fondo
- RequestFocus no funciona correctamente para EditText
- EditText: Evita concentrarte en setText ()
- Android RequestFocus () Ineficaz
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean arg1) { // TODO Auto-generated method stub if (!arg1) { if (Ehour.getText().length()<=0) { Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show(); Calendar nohour = Calendar.getInstance(); Ehour.setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY))); Ehour.setFocusable(true); Ehour.requestFocus(); } } }});
He probado las sugerencias de los siguientes mensajes:
He leído este post, pero el uso de estas sugerencias, así que no parecen funcionar: ¿Cómo establecer el enfoque en una vista cuando se crea un diseño y se muestra?
Mi objetivo es que cuando se pierda el foco del texto de edición, necesite volver a él si la entrada dada no es válida.
Además, según la sugerencia dada por Bill Mote, también he intentado:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean arg1) { // TODO Auto-generated method stub if (!arg1) { if (Ehour.getText().length()<=0) { Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show(); Calendar nohour = Calendar.getInstance(); Ehour.setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY))); ((EditText)arg0).requestFocus(); } } }});
** EDIT ** Incluso agregué la línea abajo antes del requestFocus ():
((EditText)arg0).setFocusable(true);
*** EDIT ****
Intentado de esta publicación: Detener EditText de ganar foco en inicio de actividad
Los siguientes cambios: En el diseño en el primer encabezado de diseño agregé:
android:id="@+id/enterdata" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true"
Luego en el OnChangeFocusListener hice esto:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean arg1) { // TODO Auto-generated method stub if (!arg1) { if (((EditText)arg0).getText().length()<=0) { Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show(); Calendar nohour = Calendar.getInstance(); ((EditText)arg0).setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY))); findViewById(R.id.enterdata).requestFocus(); ((EditText)arg0).setFocusable(true); ((EditText)arg0).setFocusableInTouchMode(true); ((EditText)arg0).requestFocus(); } } }});
Sin embargo todavía consigo el mismo comportamiento que antes, el texto de la edición que el foco va a permanece esa manera pero el texto de la edición que quisiera que el foco vaya a mira enfocado pero no puede parecer ser utilizado como si todavía está esperando ser Enfocado
*** EDIT ****
Código abajo como por puesto reciente encontrado en stackoverflow donde el usuario que hizo la pregunta está experimentando el mismo problema que yo:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean arg1) { // TODO Auto-generated method stub if (!arg1) { if (((EditText)arg0).getText().length()<=0) { Calendar nohour = Calendar.getInstance(); ((EditText)arg0).setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY))); if (((EditText)arg0).requestFocus()) { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); Emin.clearFocus(); Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show(); } } } }});
- Navegación permanenteVerifique el enfoque suelto después de seleccionar un elemento
- Cómo hacer edittext autofocus después de mostrar un brindis?
- Cómo borrar el enfoque de todos los elementos seleccionables en una vista?
- OnFocusChange no siempre funciona
- Cómo puedo fijar el foco (y exhibir el teclado) en mi EditText programmatically
- ¿Cómo resaltar ImageView cuando se enfoca o hace clic?
- ListView en SlidingDrawer pierde foco después de onResume
- Solicitar enfocar en editar texto
Prueba arg0.requestFocus()
.
No estoy seguro de si View
implementa requestFocus()
en la parte superior de mi cabeza por lo que podría tener que lanzarla … ((EditText) arg0).requestFocus()
.
new OnEditorActionListener(){ @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { editText.requestFocus(); //used ******* return true ****** return **true**; } }
Tuve este mismo problema, aquí el código que solía resolver:
EditText editText = (EditText) findViewById(R.id.myTextViewId); editText.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
Atentamente,