如何在WebView周围添加填充

时间:2012-02-07 01:58:37

标签: android android-layout android-webview padding

我的布局文件定义了一个WebView,下面有一些固定的高度按钮。

<?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>

我正在尝试在WebView周围添加填充,就像文本一直运行到UI的边缘一样。

我尝试将android:padding="8dp"添加到WebView,但未添加填充。我也尝试过paddingLeft和paddingRight,但它们也没有用。

WebView API文档确认它继承自View,它支持android:padding属性,所以我很惊讶这不起作用。

有人知道这是一个已知问题,还是我的布局XML的一些互动,我不理解?

仅供参考,我的解决方法是在WebView周围添加一个额外的LinearLayout,并将填充添加到其中:

  <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>

7 个答案:

答案 0 :(得分:37)

WebView在填充实现中存在错误。在webview上设置填充不会填充实际的网页,但会填充滚动条。它只是按预期部分工作。 您的解决方案是实现WebView“填充”的最佳方式。

答案 1 :(得分:22)

此问题的另一种解决方法可能是使用javascript。因此,当您的网页加载时,您可以执行此类js调用以设置填充:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        webView.loadUrl("javascript:document.body.style.margin=\"8%\"; void 0");
    }
});

答案 2 :(得分:4)

尝试添加此CSS:

<body style='margin:X;padding:X;'>

答案 3 :(得分:3)

替代方法是在ScrollView中设置WebView

然后,您可以向WebView添加左/右边距,它将获得填充效果。然而,滚动将由ScrollView处理。

"command": "dotnet",
"isShellCommand": true,
"options": {
    "cwd": "${workspaceRoot}/src/TestApp"
},

这会导致滚动条放在WebView之外,这是我想要的应用程序行为。

答案 4 :(得分:2)

@Sergii的代码对我而言不起作用,但遵循以下要求

mWebView.setWebViewClient(new mWebViewClient(){
        @Override
        public void onPageFinished(WebView web, String url) {
            web.loadUrl("javascript:(function(){ document.body.style.paddingTop = '55px'})();");
        }
    });

您也可以将paddingTop更改为paddingBottom, paddingRight, paddingLeft。将55px的值更改为所需的值。此外,为您的webview

启用JavaScript
  webView.settings.javaScriptEnabled = true

答案 5 :(得分:1)

使用填充添加一个LinearLayout。

答案 6 :(得分:0)

使用填充不是解决方法。 用于布局的填充是为此目的。

所以你的“解决方法”就是你应该做的。