Android: El uso de adjustPan y adjustResize no funciona, pero necesito ambos
No he decidido oficialmente si quiero dirigir esta ruta o no pero tengo un adview en mi documento de XML. El documento XML contiene un diseño Relativo que contiene ScrollView y Adview. El Adview se pega en la parte inferior de la disposición relativa mientras que el scrollview está en todas partes.
Cuando un usuario se centra en un edittext dentro de mi aplicación, algunos de la página sería cortada. Lo solucioné agregando:
- Cómo eliminar un módulo importado en Android Studio
- Desapertar una cadena
- Asociación de archivos de Android
- ¿Cómo extender la clase SQLiteDatabase?
- Android: qué operador para modulo (% no funciona con números negativos)
android:windowSoftInputMode="adjustPan"
Pero entonces el problema se convirtió en que mi AdView se corta cada vez que el usuario tiene el teclado abierto. Así que para solucionar ese problema cambié el manifiesto de Android a:
android:windowSoftInputMode="adjustResize"
Que mantuvo el AdView en la parte superior del teclado, pero ahora el Adview cubre parte del contenido de la aplicación. Me preguntaba si había una manera de tener el contenido de mi aplicación no se cubre y mantener el AdView por encima del teclado cuando aparece?
He intentado esto pero no funcionó:
android:windowSoftInputMode="adjustPan|adjustResize"
No estoy seguro si realmente quiero ir por esa ruta, sólo quiero la elección. Parece un poco molesto en mi opinión.
- Genéricos Java: ¿Cómo envolver / extender el caso de prueba de Android Activity?
- Vista de imagen que no envuelve contenido
- Org.apache.http.entity.FileEntity está obsoleto en Android 6 (Marshmallow)
- ¿Cómo puedo crear una vista de texto que cambie automáticamente su tamaño de fuente para que se ajuste al espacio?
- ¿Cómo obtener referencia a servicio en ejecución?
- Cómo hacer referencia a un archivo en carpeta sin procesar en Android
- Tema de transmisión en vivo
- La recolección de basura no se activa en la aplicación cuando se habilita LargeHeap, lo que resulta en OOM
No puede ajustar adjustPan
y adjustResize
al mismo tiempo. Significan comportamientos completamente diferentes y conflictivos. Sólo afectan a cómo se comporta su vista raíz cuando el teclado aparece o desaparece.
adjustPan
significa "Cuando el teclado aparece, si una vista detrás del teclado gana el foco, mueva la vista hacia arriba para que el usuario pueda verla", pero no permite al usuario mover la vista alrededor de sí mismos.
adjustResize
significa "Cuando aparezca el teclado, cambie la altura de la vista para que se ajuste por encima del teclado". Eso no significa que su vista se adapte correctamente para encajar en ese espacio – que es su trabajo.
Suena como lo que usted está tratando de hacer es tener un ScrollView por encima del anuncio que está pegado a la parte inferior de la raíz de vista RelativeLayout. En su caso, definitivamente desea usar adjustResize
para hacer que el RelativeLayout adjustResize
de tamaño a una altura más corta. Esto, a su vez, mueve el anuncio hasta la parte superior del teclado como describió. Entonces usted tiene que asegurarse de que el ScrollView principal siempre está por encima del anuncio y no de alguna manera escondido detrás de él. Es probable que desee un diseño que se parezca a esto:
<RelativeLayout android:layoutWidth="match_parent" android:layoutHeight="match_parent"> <ScrollView android:layoutWidth="match_parent" android:layoutHeight="match_parent" android:layoutAbove="@+id/advert_view"> <!-- Your scrolling views go here --> </ScrollView> <AdvertView android:id="@id/advert_view" android:layoutWidth="match_parent" android:layoutHeight="wrap_content" android:alignParentBottom="true" /> </RelativeLayout>
Tenga en cuenta que el ScrollView dice que quiere ser la altura del padre, pero establecidos por encima de la AdvertView. Esto significa que no está detrás del AdvertView en el borde inferior y podrá desplazarse a cualquier elemento que exista dentro del ScrollView.
- Enviar notificación push de un dispositivo Android a otro Uso de GCM
- Android: cómo obtener la ID de PendingIntent para cancelar la función pendingintent