将图像放在webview中并使其适合宽度

时间:2012-04-19 09:47:12

标签: java android webview

我想使用WebView来显示可能很大的图像(以便抓住内存管理)。 对于测试我在WebView中加载此代码

<head></head>
<body>
    <img alt="test" src="file:///android_asset/cute-cat-sleeping.jpg">
</body>

问题在于,如果我“按原样”将其加载到网络中。 WebView仅允许缩小,直到图像的第一个维度适合屏幕。在此示例中,图像高度完全显示在WebView中,然后不再允许缩放:

No zoom no setUseWideViewPort

正如您所见,此模式无法正确显示全局图像,尽管图像缩放时右下角的行为正确,如您所见

correct zoom display

所以我尝试了(WebView).getSettings()。setUseWideViewPort(true),结果是我可以缩小比图像的宽度更多

with setUseWideViewPort

并且右下边框中的缩放行为不正确:

zoom with setUseWideViewPort

总结:我希望最大缩小可能是imageWidth = webview宽度和缩放行为,如第二张图片所示:

enter image description here

将完成和/或有用的答案

编辑:Bounty为Vinayak.B打开了

4 个答案:

答案 0 :(得分:24)

Using Viewport Metadata可以帮助您完成此操作

视口是绘制网页的区域。虽然视口的可见区域与屏幕大小相匹配,但视口有自己的尺寸,用于确定网页可用的像素数

另请尝试以下

WebSettings settings = webView.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);

答案 1 :(得分:6)

在Webview中加载Html文件并将您的图像放入资源文件夹并使用Html读取该图像文件。

<htm>
  <table>
   <tr>
         <td>
           <img src="cat.gif" width="100%" alt="Hello">
         </td>
   </tr>
</table>
</html>

现在在Webview中加载该Html文件

webview.loadUrl("file:///android_asset/abc.html"); 

或另一种方式

如果使用LinearLayout,可以采用可以是颜色或资源的背景参数。

因此在main.xml文件中包含webview。你只需添加一个

android:background="@+drawable/backgroundmain"

并使用

   web.setBackgroundColor(0);

使网页视图透明,以查看背后的背景图片。

答案 2 :(得分:4)

此解决方案是将HTML代码中的img标记宽度设置为100%,然后使用loadDataWithBaseURL(null, htnlString, "text/html", "UTF-8", null);方法将其加载到您的网页视图中

试试这段代码

String htnlString = "<!DOCTYPE html><html><body style = \"text-align:center\"><img src=\"http://shiaislamicbooks.com/books_snaps/UR335/1.jpg\" alt=\"pageNo\" width=\"100%\"></body></html>";
yourWebView.loadDataWithBaseURL(null, htnlString, "text/html", "UTF-8", null);

答案 3 :(得分:0)

编辑您的Webview:

WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);