sobre - manual de programacion android
¿Cómo mostrar un cuadro de edición de texto "sobre" la pantalla? (1)
Tengo una aplicación que tiene un diseño primario de retrato (está fijo como retrato) y hay un lugar para escribir el texto. Me gustaría lanzar como una ventana emergente en orientación horizontal con la imagen de fondo empañada. Sé que hay un Popup Widget, pero cualquier idea para girar el cuadro de edición de texto sería genial. Girarlo en una vista de retrato (cuadro de texto solamente) cuando se desliza el teclado también funcionaría, al igual que mostrar una nueva pantalla con el cuadro de texto en la diapositiva del teclado.
La solución más fácil para su problema es mostrar su EditText
dentro de una actividad temática de dialog
separada que se EditText
desde dentro de su actividad principal (fijada en retrato).
La actividad EditText no debe tener su orientación fija, por lo que girará como es de esperar cuando deslice el teclado.
Crear la actividad de entrada de texto
Cree una nueva actividad que contenga solo la vista de edición de texto y cualquier otra cosa que quiera incluir (probablemente botones OK / CANCELAR y tal vez una etiqueta?). Dentro del manifiesto establece su tema en Theme.Dialog
.
<activity android:name="TextEntryActivity"
android:label="My Activity"
android:theme="@android:style/Theme.Dialog"/>
Fogging o Blurring las actividades detrás de un diálogo se realiza mediante la modificación de las propiedades de la ventana de la actividad en primer plano (su cuadro de diálogo de entrada de texto). Dentro de su método onCreate use getWindow().setFlags
para aplicar difuminado a cualquier actividad de fondo.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Lanzar y leer valores introducidos de la actividad de entrada de texto
Use startActivityForResult
para iniciar la actividad de entrada de texto. Dentro de esa actividad, llame a setResult
para devolver la cadena de texto ingresada dentro del intento devuelto usando las técnicas descritas en esta publicación .
Reemplace el método onActivityResult
para escuchar el resultado de la actividad secundaria.
Disparando lanzamiento en el teclado expuesto
Puede iniciar la actividad de entrada de texto siempre que lo desee, pero si desea mostrarla siempre cuando el teclado está expuesto, puede capturar este evento explícitamente.
Comience añadiendo el atributo android:configChanges
a la entrada del manifiesto de la actividad del retrato. Debe estar registrado para escuchar keyboardHidden
.
android:configChanges="keyboardHidden"
Dentro de esa actividad, anule onConfigurationChanged
para iniciar la actividad de entrada de texto.
@Override
public void onConfigurationChanged(Configuration newConfig) {
Intent i = new Intent(this,TextEntryActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
}
Es posible que desee comprobar para confirmar que el teclado está expuesto (en lugar de oculto) utilizando la nueva variableConfig antes de iniciar la actividad de entrada de texto.
También puede usar la misma técnica para regresar automáticamente de la actividad de ingreso de texto cuando el teclado está oculto.