有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将图像放在webview中并调整其宽度

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

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

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

No zoom no setUseWideViewPort

正如你所见,这种模式不允许正确显示全局图像,尽管当图像被缩放时,右下角的行为是正确的,正如你在这里看到的

correct zoom display

所以我尝试了(网络视图)。getSettings()。setUseWideViewPort(true)结果是我可以缩小图像的宽度

with setUseWideViewPort

右下角的缩放行为不正确:

zoom with setUseWideViewPort

总结:我希望最大的缩小可能是imageWidth=webview width,以及第二张图片中的缩放行为:

enter image description here

完整和/或有用的答案将获得奖励

编辑:为维纳亚克打开了赏金。B


共 (4) 个答案

  1. # 1 楼答案

    下面是一个解决方案,在HTML代码中将img标记宽度设置为100%,然后使用loadDataWithBaseURL(null, htnlString, "text/html", "UTF-8", null);方法将其加载到webview中

    试试这个代码

    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);
    
  2. # 2 楼答案

    在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,可以使用颜色或资源的背景参数

    主要是这样。xml文件包含webview。你只是添加了一个

    android:background="@+drawable/backgroundmain"
    

    使用

       web.setBackgroundColor(0);
    

    使webview透明以查看后面的背景图像

  3. # 3 楼答案

    Using Viewport Metadata可能会帮你做到这一点

    视口是绘制网页的区域。尽管视口的可见区域与屏幕大小匹配,但视口有自己的尺寸,这些尺寸决定了网页可用的像素数

    也可以在下面试试

    WebSettings settings = webView.getSettings();
    settings.setUseWideViewPort(true);
    settings.setLoadWithOverviewMode(true);
    
  4. # 4 楼答案

    编辑您的网络视图:

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