2010-12-30 22 views
8

Encontré this publicación anterior que definitivamente ayuda con mi problema, pero me doy cuenta de que realmente no parece resolver mi problema. He descubierto que necesito configurar android: windowSoftInputMode = "adjustPan" para mi actividad. Pero el problema es que simplemente no se desplaza SUFICIENTEMENTE.Superposición de teclado suave con EditText Campo

El campo de texto está hacia la parte inferior de la vista, y cuando aparece el teclado, la vista cambia ligeramente, pero solo la parte superior de EditText. El campo de texto se ha activado automáticamente, y cuando comienza a mostrar las opciones de autocompletar, la vista se reduce un poco más, pero en realidad termina oscurecida por las opciones de autocompletar. Hace que el campo de entrada de texto sea muy difícil de usar ya que no puedes ver nada de lo que estás escribiendo.

Es un campo de entrada de línea múltiple, y cuando el texto pasa a la siguiente línea, la vista se acerca más, de modo que puede ver la (s) línea (s) anterior (es) de texto. Pero no puedes ver lo que estás escribiendo, lo que creo que es bastante importante.

¿Alguien tiene alguna idea para resolver este problema?

+0

Así que la mejor idea que he tenido es hacer que los campos de arriba sean "invisibles" o "desaparecidos", pero definitivamente no es una solución ideal. Gracias por la ayuda de Phobos, pero desafortunadamente, toda esa solución es reducir el campo en el que trato de concentrarme, que no es lo que estoy buscando hacer. –

Respuesta

10

Por lo tanto, he encontrado lo que parece ser la causa del problema. En mi AndroidManifest.xml me había propuesto

<uses-sdk android:minSdkVersion="3" /> 

Al parecer, el uso de un minSdkVersion abajo "4" estaba en la raíz del problema. Al cambiarlo a "4", el diseño apareció como debería, y EditText tuvo su primera línea sobre la parte superior del teclado de forma adecuada.

Gracias por la ayuda, Phobos.

+0

¡Guau, gracias por esta pista! Nunca lo habría encontrado sin eso. –

+0

Solución perfecta, problema exacto que tuve –

+1

Tengo el mismo problema. Mi diseño tiene 7 Editar texto y en la parte superior de la pantalla hay un botón y en la parte inferior de la pantalla hay otro botón.He usado y android: windowSoftInputMode = "adjustPan" en mi actividad en el archivo AndroidManifest, pero cuando se abre el teclado y trato de ir al botón inferior no me deja ver. Mi diseño total se hace usando el diseño relativo. ¿Qué debo hacer para ver el botón de la parte inferior si he abierto la placa de teclas programadas haciendo clic en el segundo texto de edición (quiero establecer el valor en segundos y luego quiero hacer clic en el botón de la parte inferior). –

3

Envuelva su UI en un contenedor ScrollView. Esto permitirá al usuario ver toda la interfaz de usuario, aunque mediante desplazamiento, si es necesario. Es posible que la interfaz de usuario no sea lo suficientemente grande como para desplazarse sin el teclado en la pantalla, pero cuando se muestra el teclado reduce efectivamente el tamaño de la pantalla.

+0

Puede que no entienda bien, pero todo mi archivo layout.xml es RelativeLayout. Si está sugiriendo que ajuste el RelativeLayout dentro de ScrollView (es decir, ?), Traté de hacerlo y no he tenido éxito. Se termina buscando exactamente de la misma manera. Podrían ser parámetros que estoy usando, o algo así, pero parece idéntico a la forma en que lo hizo. Si no utilicé match_parent para height/width, y fillViewPort = "true", causaría un bloqueo o haría que el diseño apareciera incorrectamente. ¿Algo que me falta? –

+1

Después de ajustar su diseño en ScrollView, desactive adjustPan. Cada vez que tengo EditTexts en mi UI principal uso este enfoque. Creo que TableLayout funciona mejor para mí cuando estoy creando algún tipo de UI de formulario. No sé cuál es tu diseño, pero échale un vistazo. Si RelativeLayout no funciona, vea si puede hacerlo con TableLayout. – Phobos

+0

Desafortunadamente, el campo EditText en cuestión no tiene una altura específica, por lo que parece que no funciona. La altura se establece en "match_parent" (para llenar el "espacio restante" del diseño) y su tamaño se basa en el tamaño relativo de la Vista anterior y la Vista a continuación. Entonces, ¿qué pasa si uso adjustResize en lugar de adjustPan? El campo se encoge y casi desaparece, en lugar de desplazarse al área visible de forma adecuada. –

Cuestiones relacionadas