Android Webview - 使用一个loadUrl缩放图像以适合屏幕

时间:2015-10-07 19:16:47

标签: android image webview

在我的应用程序webview中,首次加载时将文本html设置为屏幕没有问题但是当您尝试加载包含单个大图像的页面作为启动活动后的第一页时出现问题。

如果在活动开始后加载任何类型的页面后尝试加载包含单个大图片的页面,则单个大图像的页面将适合屏幕而没有任何问题。但是,如果您尝试加载活动开始后单个大图像作为第一页的页面,它将显示一个页面,其中包含大量空白区域的小图像。

有没有办法让页面包含单个大图像和一个WebView#loadUrl方法?

这是我的带有单个大图像源的html页面

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Cover Title</title>
    </head>
    <body>
        <div id="cover">
            <svg xmlns="http://www.w3.org/2000/svg" height="100%" preserveAspectRatio="xMidYMid meet" version="1.1" viewBox="0 0 1125 1600" width="100%" xmlns:xlink="http://www.w3.org/1999/xlink">
                <image height="1600" width="1125" xlink:href="../images/v01-cover.jpg" />
            </svg>
        </div>
    </body>
</html>

我已经尝试设置 setLoadWithOverviewMode(true)和setUseWideViewPort(true)但是没有为我工作。
阅读此链接Android WebView, Scaling Image to fit the screen

中的supermus评论

2 个答案:

答案 0 :(得分:3)

如果您使用的是WebView,则需要带有视口的元标记(这样,即使在加载和失败期间,它也可以使用像素值计算宽度等内容)。在文档的<meta name="viewport" content="width=device-width, initial-scale=1">上添加<head>。这应该可以解决一些问题。

答案 1 :(得分:2)

在阅读了Bonatti的回答之后,我设法加入了适合屏幕的界面&#39;活动开始后的图片页面以某种方式通过在设置webview时调用此函数强制webview 更新视口

private void setWebView() {
    mWebView = (WebView)findViewById(R.id.webview);
    String data = "<html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head></html>";
    mWebview.loadDataWithBaseURL(null, data, null, "UTF-8", null);
}

干杯。

更新

不使用#loadUrl,而是将#loadDataWithBase64与您的自定义ContentProvider一起使用(以支持本地文件),因为您不需要编辑您的html,因为#loadDataWithBase会立即将webview端口安装到屏幕上,这与#loadUrl不同在加载文件/网址时,最有可能在设置视口时出现小错误