El EditText de Android se oculta cuando se muestra el teclado virtual y está involucrado SurfaceView

Tengo una interfaz de usuario simple: un EditText debe estar situado debajo de un SurfaceView. Utilizo un RelativeLayout para organizar estas dos vistas.

Ahora, cuando toco el EditText para abrir el teclado virtual, el SurfaceView se desliza hacia arriba, pero el EditText está oculto y no muestra la cadena escrita.

Para reproducir, utilice el siguiente código XML de presentación:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout01" android:layout_height="fill_parent" android:layout_width="fill_parent"> <SurfaceView android:id="@+id/SurfaceView01" android:layout_width="fill_parent" android:layout_height="wrap_content"> </SurfaceView> <EditText android:id="@+id/EditText01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" android:selectAllOnFocus="true" android:textStyle="normal" android:singleLine="true"> </EditText> </RelativeLayout> 

La clase de actividad principal solo necesita mostrar el diseño. Cuando inicie el programa y toque el EditText, aparece el teclado virtual pero el campo EditText se ha ido.

Tal vez el RelativeLayout está causando los problemas, pero no sé cómo reproducir el mismo diseño con otra clase de diseño.

Cualquier sugerencia es bienvenida, realmente aprecio su ayuda.

Gracias.

Editar:

Aquí hay dos capturas de pantalla, una que muestra el EditText en la parte inferior sin teclado virtual, uno con teclado virtual pero sin EditText. Es interesante notar que el SurfaceView y el EditText realmente se desplazan hacia arriba, el EditText simplemente desaparece. BTW esto también sucede a un botón si está al lado del EditText.

EditText debajo de un SurfaceView (izquierda); EditText se ha ido (derecha)

Como comentador en el hilo sobre este error sugerido, es muy fácil solucionar este problema estableciendo el color de fondo del SurfaceView o GLSurfaceView a transparente con mSurfaceView.setBackgroundColor(Color.TRANSPARENT); así como.

Este problema se produjo para mí al presionar un EditText en Honeycomb (v13) en un Samsung Galaxy Tab 10.1. El problema era que después de que el GLSurfaceView fue redimensionado, en su lugar todavía era un rectángulo negro que cubría el EditText . Esta solución funciona haciendo que el rectángulo erróneo transparente, por lo que el EditText se puede ver.

Agregue el código de seguimiento para su actividad en AndroidManifest.xml android:windowSoftInputMode="adjustPan"

¡Si, es correcto! Agregue el código de seguimiento para su actividad en AndroidManifest.xml android:windowSoftInputMode="adjustPan"

Y en su texto de edición, simplemente añada:

 android:imeOptions="flagNoFullscreen" 

He encontrado que tiene diferentes resultados en diferentes dispositivos, entonces yo uso ScrollView como la vista de la raíz y poner el diseño en ScrollView, cuando el modo fullScreen uso funciona bien. Y asegúrese de establecer android: fillViewport = "true" si todavía tiene algún problema hágamelo saber [email protected]

  • ERROR: createWindowSurface falló EGL_BAD_ALLOC
  • Tutorial de cámara para Android (con vista de superficie)
  • ¿Cómo se relacionan las devoluciones de llamada de SurfaceHolder con el ciclo de vida de la actividad?
  • Cómo conciliar la diferencia en la relación de aspecto entre el tamaño de vista previa de la cámara y el tamaño de la imagen
  • Pantalla en blanco / negro en la galaxia S3 con jell bean v4.1.1
  • ¿Qué diferencias hay entre Surfaceview y TextureView?
  • Surface Flinger, SurfaceView, Surface, SurfaceHolder y Bitmap es Android
  • Desplazamiento de Android SurfaceView
  • Android ANR SurfaceView
  • WaitingInMainSignalCatcherLoop Error en la aplicación de Android
  • SurfaceView y la clase de inflado de errores
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.