2009-01-20 8 views
14

Tengo una aplicación que tiene un diseño primario de retrato (se fija 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.¿Cómo mostrar un cuadro de edición de texto "sobre" la pantalla?

Respuesta

37

La solución más fácil a su problema es mostrar su EditText dentro de una actividad temática separada dialog que se inicia 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.

la creación del texto de entrada Actividad

crear una nueva actividad del EditarTexto incluye solamente la vista y cualquier otra cosa que desee incluir (probablemente OK Cancelar botones/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"/> 

nebulización o Borrando las actividades detrás de un cuadro de diálogo se lleva a cabo mediante la modificación de las propiedades de la ventana de la Actividad de primer plano (el diálogo de introducción 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); 

Lanzamiento y lectura introducen los valores de la actividad de entrada de texto

Uso startActivityForResult para iniciar la actividad de introducción de texto. Dentro de esa actividad llame al setResult para devolver la cadena de texto ingresada dentro del intento devuelto usando las técnicas descritas en this post.

Anule el método onActivityResult para escuchar el resultado de la actividad secundaria.

Activación lanzamiento de teclado expuestos

Puede iniciar la actividad de introducción de texto siempre que lo desee, pero si desea mostrar siempre cuando se expone el teclado que puede capturar este evento explícitamente.

Comience añadiendo el atributo android:configChanges a la entrada del manifiesto de la actividad del retrato. Debe registrarse para escuchar keyboardHidden.

android:configChanges="keyboardHidden" 

Dentro de esa actividad, anular onConfigurationChanged para iniciar la actividad de introducción 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 está siendo expuesto el teclado (en lugar de escondido) utilizando la variable newconfig antes de iniciar la actividad de introducción de texto.

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

+0

gracias por su visión. – Chrispix

Cuestiones relacionadas