在WebView Android中删除不需要的空白空间

我是Android新手。 我已经开始使用WebView开发一个应用程序。 其实我正在用Webview加载图像(我喜欢使用类的内置缩放控件)。 我可以成功加载图像,但我可以看到一些恼人的空白。 我无法find删除它的方法。 我的图像是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); } } 

请帮帮我 !!!

Solutions Collecting From Web of "在WebView Android中删除不需要的空白空间"

默认情况下, webview在body中有一些margin / padding。 如果你想删除该填充/边距,则覆盖body 标签并添加如下边距:

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

如果您正在讨论的空白位于右侧,则可以将其添加到Web视图中。

 mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 

这应该会使得空白区域消失,只要它位于滚动条的右侧即可。

通过Defualt HTML网页有一个填充和10px的边距; 你必须在你的头部或CSS文件中设置:

 <style type="text/css"> html, body { width:100%; height: 100%; margin: 0px; padding: 0px; } </style> 

这对我来说是诀窍。

我在我的WebView中渲染了HTML内容的空白区域(尽pipe没有内容中的图片)。 起初,我认为这是涉及CSS的问题,如上所述。 但是通过使用样式表来改变HTML,BODY等的背景,它看起来越来越像WebView的填充。

user3241873上面显示了如何调整WebView本身的填充,但是我发现当由Eclipse创build的默认Android应用程序生成布局文件(RelativeLayout“容器”而不是“LinearLayout”)时,它将这些属性添加到R​​elativeLayout:

 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时,它删除了难看的空白区域:)

如果某人用WebViewreplace了默认的(Hello World)TextView,那么父亲RelativeLayout的填充就像一个讨厌的亲戚一样在家里。

使用WebView的setScrollBarStyle方法,并提供参数View.SCROLLBARS_INSIDE_OVERLAY

这是一个例子,你可以testing,使用一个HTML模板,然后你可以用你想要的任何东西replace“身体”文本…在你的情况下,一个图像的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(); } } 

我有这个[这是我的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 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"> 

我尝试了所有的解决scheme,但是他们对我来说不是很好。 这个为我工作。

我真的不知道你指的是哪个空白(也许图像有填充等等),但是通常如果你在WebView中有任何布局问题,你会尝试通过提供一个适当的(内联)CSS样式表来解决它们。

将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" /> 

我已经知道了

在这里我的逻辑代码,当应用程序打开网站,你必须得到你的web视图的大小,然后设置它的高度

在这里我的代码

  ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webpage.getLayoutParams(); p.height = webpage.getHeight(); Log.e(" webpage.getHeight()", String.valueOf(webpage.getHeight())); webpage.setLayoutParams(p); 

希望你会把我的代码和我的答案:)在任何设备上工作,甚至标签也:)

我的情况,我的web视图的顶部有很大的填充。 所以,设置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" />