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.

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> 

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.

  • NullPointerException en la animación de dissapearence de RecyclerView desde soporte v.23.2.0
  • Problemas de renderización de Android GIF
  • Cómo Inflar Extended LinearLayout de XML
  • Fondo blanco cuando se inicia la aplicación de Android
  • El uso de include como nodo del nodo de diseño raíz arroja "excepción de error al incluir la clase"
  • ¿Cómo puedo configurar el tamaño ProgressDrawable de un buscador personalizado para que sea más pequeño que el ProgressBackground
  • Creación de ruta desde los bordes del mapa de bits android
  • StaggeredGridLayoutManager reordena los elementos
  • Crear visualizador de espectro de audio android app
  • LinearLayout no llena tablerow incluso la anchura fill_parent se llama
  • Android: nextFocusForward se ignora en el diseño
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.