如何使用JavaScript在Android WebView中去除内置边距

4
我在应用程序中使用Android WebView。我注意到它有内置的边距,因此需要根据UI要求将其删除。
我已经使用了这个方法,得到了完美的结果。
 @Override
        public void onPageFinished(WebView view, String url) {
//            super.onPageFinished(view, url);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.loadUrl("javascript:document.body.style.margin=\"0%\"; void 0");
            webView.setVisibility(View.VISIBLE);
        }

当它被通知时,它会刷新并且看起来很糟糕。但是我们可以将JavaScript应用到我们的HTML代码中,对吗?我已经在那里使用了<script> <script/>,但没有结果。

webView.loadDataWithBaseURL(null, "<style>a{color:#3D7B8A; text-decoration:none}</style>"+ getDescription().replace("<p>", "<p style= \"line-height: 150%; text-align: justify;\" >"), "text/html", "utf-8",
                    null);

请给予建议。

当您加载JavaScript URL时,它将运行JavaScript代码,该代码可修改已加载的文档的DOM。但如果您没有JavaScript URL,浏览器会认为它是一个新的网页,并替换已经加载的文档。 - kris larson
@krislarson现在WebView中的边距已经被移除了,但我们能否在loadDataWithBaseURL中加入JavaScript呢? - Smit Patel
您可以尝试使用“javascript:”作为基本URL,以及“application/javascript”作为MIME类型,但我从未尝试过,因此不知道它是否有效。我经常使用loadUrl来加载JavaScript,因为我知道它行得通。 - kris larson
1
你尝试过在<head>中注入样式重置* {margin: 0; padding: 0}来移除所有边距吗? - avetisk
@avetisk 是的,我做了 <style>a{color:#3D7B8A; text-decoration:none} * {margin: 0; padding: 0} </style> 但它也删除了行之间的填充。我只需要删除轮廓边距。 - Smit Patel
如果它能正常工作,那么尝试使用 html, body, body > * { padding: 0; margin: 0 } - avetisk
1个回答

3
据我所知,从上面的代码来看,您还没有将 padding = 0

我在 Google 上搜索并找到了这个问题和答案,您可能想看一下:Remove unwanted White Space in WebView Android

默认情况下,webview 在 body 中有一些边距/填充。如果您想要删除该填充/边距,则可以覆盖 body 标签并添加边距,如下所示:

<body style="margin: 0; padding: 0">


1
是的,我找到了相同的内容并尝试了,但没有得到期望的结果。 - Smit Patel
嗯,那很奇怪。我希望你能找到解决问题的方法 - 如果你还没有的话。 - Josh Murray
它会从轮廓中移除边距,但也会从段落中移除填充 :( - Smit Patel
@SmitPatel:然后你可以在CSS中这样做:p { padding: 10px; } 或者你想要多少填充就填多少。 - Josh Murray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接