我的布局文件定义了一个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>
答案 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
webView.settings.javaScriptEnabled = true
答案 5 :(得分:1)
使用填充添加一个LinearLayout。
答案 6 :(得分:0)
使用填充不是解决方法。 用于布局的填充是为此目的。
所以你的“解决方法”就是你应该做的。