android - swiftkey - ¿Cómo subir todo el diseño cuando se muestra el teclado?
teclado gboard (9)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_gravity="bottom"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</FrameLayout>
en manifiesto:
android:windowSoftInputMode="adjustPan"
Comportamiento inicial:
Comportamiento actual:
Comportamiento deseado:
¿Cómo lograr el comportamiento deseado de diseño? adjustResize no es adecuado porque esta opción cambia el tamaño del diseño.
¡Gracias por las respuestas!
Intente cambiar FrameLayout
a RelativeLayout
con la alignParentBottom="true"
en su LinearLayout
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_alignParentBottom="true"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
La única forma de obtener ese resultado es redimensionar el diseño. Use android: windowSoftInputMode = "adjustResize"
No creo que haya una manera simple de hacer esto. Al menos no tan simple como establecer una bandera. Tuve una situación similar de querer que el teclado subiera al nivel de Vistas muy por debajo del Texto de Edición seleccionado. Terminé usando esta respuesta: ¿Cómo verificar la visibilidad del teclado del software en Android?
y ajustar manualmente mis tamaños de vista cuando el teclado se hace visible.
No podrá implementar eso con adjustPan
, porque de la guía oficial
La ventana principal de la actividad no se redimensiona para dejar espacio para el teclado virtual. Más bien, el contenido de la ventana se panoramiza automáticamente para que el foco actual nunca quede oculto por el teclado y los usuarios siempre puedan ver lo que están escribiendo. Esto generalmente es menos deseable que cambiar el tamaño, ya que el usuario puede necesitar cerrar el teclado virtual para acceder e interactuar con las partes ocultas de la ventana.
Su Button
está por debajo de su enfoque actual
Probablemente quieras echar un vistazo a esta respuesta . Una sugerencia de ello:
Establezca la propiedad del modo SoftInput de la ventana en adjustPan y adjustResize
<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
Solo usa esta propiedad en actividad
android:windowSoftInputMode="adjustPan"
al eliminar la línea inferior de actividad y android: windowSoftInputMode del manifiesto, obtuve un desplazamiento completo del diseño que anteriormente estaba oculto por
this.getWindow (). setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
por favor verifique este enlace del video de salida: https://mega.nz/#!TpRCWZjY!TqDzv0Yn3Q24PR1JAdH8kRVeDf2iSa1LQbNBgF0SVHk
comprueba si el diseño que contiene EditText y Button es RelativeLayout.
prueba este en tu manifiesto:
android:windowSoftInputMode="adjustResize|stateUnchanged"