Pregunta

Tengo una aplicación que tiene un diseño primario de retrato (se fija como retrato), y hay un lugar para escribir texto. Me gustaría iniciar como una ventana emergente en orientación horizontal con la imagen de fondo empañada. Sé que hay un widget emergente, pero cualquier idea para rotar el cuadro de edición de texto sería genial. Girarlo a una vista vertical (solo cuadro de texto) 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.

¿Fue útil?

Solución

La solución más fácil a su problema es mostrar su EditText dentro de una Actividad temática dialog separada que inicia desde su Actividad principal (fijada en vertical).

La actividad EditText no debería tener su orientación fija, por lo que rotará como cabría esperar al deslizar el teclado.

Creación de la actividad de entrada de texto

Cree una nueva Actividad que contenga solo la Vista Editar Texto y cualquier otra cosa que desee incluir (probablemente botones OK / Cancelar y tal vez una etiqueta?). Dentro del manifiesto, configure su tema en Theme.Dialog .

<activity android:name="TextEntryActivity" 
          android:label="My Activity" 
          android:theme="@android:style/Theme.Dialog"/>

Empañar o difuminar las actividades detrás de un diálogo se realiza modificando las propiedades de la ventana de la actividad en primer plano (su diálogo de entrada de texto). Dentro de su método onCreate, use getWindow (). SetFlags para aplicar el desenfoque a cualquier actividad de fondo.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,  
                     WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

Inicio y lectura de 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 de la intención devuelta utilizando las técnicas descritas en esta publicación .

Anule el método onActivityResult para escuchar el resultado de la sub Actividad.

Lanzamiento de activación en el teclado expuesto

Puede iniciar la actividad de entrada de texto cuando lo desee, pero si desea mostrarla siempre cuando el teclado está expuesto, puede capturar este evento explícitamente.

Comience agregando el atributo android: configChanges a la entrada de manifiesto de la actividad vertical. 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 verificar para confirmar que el teclado está expuesto (en lugar de estar oculto) utilizando la nueva variable de configuración antes de iniciar la actividad de entrada de texto.

También es posible que desee utilizar la misma técnica para regresar automáticamente de la actividad de ingreso de texto cuando el teclado está oculto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top