Cómo agregar relleno alrededor de un WebView
Mi archivo de diseño define un WebView, debajo del cual hay algunos botones de altura fija.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fadingEdge="none"> <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1.0"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="60dp" android:padding="8dp"> <Button android:text="Decline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0"> </Button> <Button android:text="Accept" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0"> </Button> </LinearLayout> </LinearLayout>
Estoy tratando de añadir relleno alrededor de la WebView, ya que en el momento en que el texto corre hasta el borde de la interfaz de usuario.
- Android - Compuesto personalizado generado dinámicamente Ver recreado en RecyclerView, causando un rendimiento bajo
- Libros sobre Android Diseño de interfaces de usuario
- Restaurar el diseño predeterminado de la barra de acciones
- ¿Cómo reemplazar inmediatamente la tostada actual con una segunda sin esperar a que la actual termine?
- Android: el atributo layout_marginRight no funciona en RelativeLayout
Intenté agregar android:padding="8dp"
al WebView, pero no se añadió relleno. También intenté paddingLeft y paddingRight también, pero no trabajaron tampoco.
La API de WebView confirma que hereda de View, que soporta el atributo android: padding , por lo que estoy sorprendido de que esto no funcionara.
¿Alguien sabe si se trata de un problema conocido, o alguna interacción de mi XML de diseño que no entiendo?
FYI, mi solución fue poner un LinearLayout extra alrededor de la WebView, y añadir el relleno para que en su lugar:
<LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1.0" android:padding="8dp"> <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
- ClassCastException: android.support.v7.widget.LinearLayoutCompat $ LayoutParams no se puede convertir en android.widget.LinearLayout $ LayoutParams
- Excepción generada durante la representación: No se pudo encontrar el valor de asignación de recurso de diseño 0x7F04001B (nombre resuelto: content_main) en la configuración actual
- Advertencia del adaptador de enlace personalizado de DataBinding de Android
- Lista lenta cuando se establece la fuente personalizada
- Android Cómo ajustar el diseño en el modo de pantalla completa cuando el teclado virtual está visible
- Pintar el texto bordeado en un lienzo android
- No se puede usar Studio Designer con una clase derivada RelativeLayout personalizada
- No se puede comprimir un mapa de bits reciclado
El WebView tiene un error en la implementación de relleno. Establecer un relleno en una vista web no se acoplará a la página web real, sino que va a pad las barras de desplazamiento. Solo funciona parcialmente como se esperaba. Su solución es la mejor manera de lograr el "relleno" para un WebView.
Otra solución para este problema podría estar en el uso de JavaScript. Así que cuando su página web está cargado puede hacer la llamada js para establecer paddings:
webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { webView.loadUrl("javascript:document.body.style.margin=\"8%\"; void 0"); } });
Sólo intenta agregar este CSS:
<body style='margin:X;padding:X;'>
Añadir un LinearLayout adround con relleno.
Un enfoque alternativo sería establecer el WebView dentro de un ScrollView
A continuación, puede agregar el margen izquierdo / derecho al WebView y obtendrá el efecto de relleno. El desplazamiento sin embargo será manejado por ScrollView.
<ScrollView style="@style/MatchMatch"> <WebView android:id="@+id/my_web_view" android:layout_marginLeft="@dimen/webViewMargin" android:layout_marginRight="@dimen/webViewMargin" android:layout_width="match_parent" android:layout_height="wrap_content"/> </ScrollView>
Esto hará que la barra de desplazamiento se coloque fuera de la WebView, que es el comportamiento que quería para mi aplicación.
Usar el relleno NO es una solución provisional aquí. El relleno para la disposición está allí para ese propósito.
Así que su "solución" es lo que debería haber hecho.
- Error: Multi dex requiere la versión Build Tools
- ¿Por qué Cordova / Phonegap agrega 8 a mi código de versión de Android?