我已经开始使用WebView开发应用程序了。实际上我正在使用Webview加载图像(我喜欢使用该类的内置缩放控件)。我可以成功加载图像,但我可以看到一些恼人的白色空间。我找不到删除它的方法。我的图片尺寸为750 * 1000。我在下面附上了我的代码。
webview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<WebView
android:id="@+id/webView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
ImageViewer.java
package com.android.test;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class ImageViewer extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
String loadUrl = "file:///android_res/drawable/splash_001.jpg";
WebView image = (WebView) findViewById(R.id.webView);
image.clearView();
image.clearCache(true);
image.getSettings().setBuiltInZoomControls(true);
image.getSettings().setSupportZoom(true);
image.getSettings().setLoadWithOverviewMode(true);
image.getSettings().setUseWideViewPort(true);
image.loadUrl(loadUrl);
}
}
答案 0 :(得分:52)
默认情况下, webview 在正文中有一些边距/填充。如果要删除该填充/边距,则覆盖正文标记并添加边距,如:
<body style="margin: 0; padding: 0">
答案 1 :(得分:21)
如果您正在谈论的空白区域位于右侧,则可以将其添加到网页浏览中。
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
这应该使白色空间消失,只要它位于滚动条的右侧。
答案 2 :(得分:17)
默认情况下,HTML网页的填充和边距为10px;您必须在头部或css文件中设置:
<style type="text/css">
html, body {
width:100%;
height: 100%;
margin: 0px;
padding: 0px;
}
</style>
这对我有用。
答案 3 :(得分:8)
我的WebView中呈现的HTML内容边缘有刺激性的空白区域(尽管该内容中没有图像)。起初我认为它与上面提到的CSS问题有关。但是通过使用样式表来改变HTML,BODY等的背景,它看起来越来越像在WebView周围填充。
user3241873在上面显示了如何调整WebView本身的填充,但我发现当Eclipse创建的默认Android应用程序生成布局文件时(RelativeLayout&#34; container&#34;而不是&#34; LinearLayout& #34;),它将这些属性添加到RelativeLayout:
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
如果在res / values / dimens.xml中查找这些填充值,您会发现它们已设置为16dp。当我改为0dp时,它删除了难看的空白区域:)
如果有人用WebView替换了默认的(Hello World)TextView,那么父亲RelativeLayout的填充就像家里一个讨厌的亲戚一样。
答案 4 :(得分:3)
使用WebView的setScrollBarStyle
方法,并将参数提供为View.SCROLLBARS_INSIDE_OVERLAY
。
答案 5 :(得分:1)
这是一个可以测试使用html模板的示例,然后您可以将“body”文本替换为您想要的任何内容...在您的情况下,为图像的html。您可以根据需要使用css来设置html的样式。希望这有助于您了解更多如何使用本地资产。如果您需要更多帮助,请发表评论。
一个不容错过的关键路线是<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,target-densityDpi=device-dpi" />
将此作为模板使用:(assets / template.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,target-densityDpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
[CONTENT]
</body>
</html>
使用这样的css:(assets / style.css)
@font-face {
font-family: Roboto;
src: url(file:///android_asset/fonts/Roboto.ttf);
}
html, div {
margin: 0;
padding: 0;
}
body {
font-family: Roboto;
font-size: 1.0em;
color: rgb(61,61,61);
text-align: left;
position:relative;
padding: 40px;
background-color: #eeeeee;
}
然后在您的WebView类中:(您的扩展WebView的类)
public void setText(CharSequence text, int color){
try {
InputStream is = getResources().getAssets().open("article_view.html");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
loadDataWithBaseURL("file:///android_asset/",
new String(buffer).replace("[CONTENT]", text.toString()),
"text/html", "UTF-8", null);
} catch (IOException e) {
e.printStackTrace();
}
}
答案 6 :(得分:1)
我有[这是我的 activity.xml ]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
我刚刚删除了relativeLayout中的填充
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
我尝试了上述所有解决方案,但他们并没有为我做得很好。 这个对我有用。
答案 7 :(得分:0)
我真的不知道你指的是哪个空格(也许图像有填充等),但通常如果你在WebView中有任何布局问题,你会尝试通过提供适当的(内联)css来修复它们-stylesheet。
答案 8 :(得分:0)
将webview.xml中的填充设置为0dp
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<WebView
android:id="@+id/webView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp" />
答案 9 :(得分:0)
Kotlin 答案
例如,我以这种方式删除了 iFrame 和 WebView 之间的空间:
val url = "www.stackoverflow.com"
val iframeExample = "<html><body style=\"margin: 0; padding: 0\"><iframe width=\"100%\" src=\"$url\" frameborder=\"0\" allowfullscreen></iframe></body></html>"
webView.loadData(iframeExample, "text/html", "utf-8")
答案 10 :(得分:-1)
我已经知道了。
这里是我的逻辑代码,当应用程序打开网站时,您必须获得webview的大小,然后将其设置为高度
这里是我的代码
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webpage.getLayoutParams();
p.height = webpage.getHeight();
Log.e(" webpage.getHeight()", String.valueOf(webpage.getHeight()));
webpage.setLayoutParams(p);
希望你能把我的代码和我的答案:)用于任何设备甚至标签:)
答案 11 :(得分:-1)
我的情况,我的webview顶部有大填充。所以,设置scrollbarSize =“0dp”。在AS 2.2.3中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
android:scrollbarSize="0dp"
/>