WebView无法正确缩放?

时间:2015-07-13 07:59:43

标签: android android-webview android-imageview

我使用WebView将HTML转换为图像。 HTML固定为600px(使用CSS定义)。

WebView布局是:

<WebView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="none"/>

在加载html文档时,我通过执行以下操作获取webview大小:

int width = webView.getMeasuredWidth();
int height = webView.getMeasuredHeight();

我注意到的第一个奇怪的事情是宽度是650.文档显示,我需要水平滚动才能查看它(lo-res设备)。

下一步是将webview转换为图像:

bitmap = Bitmap.createBitmap(600, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bitmap);
webView.draw(c);

但是,将webview转换为位图裁剪右侧部分(webview中不可见的区域)。

为什么在我的HTML文档中定义600时webview宽度为650?为什么图像裁剪?

1 个答案:

答案 0 :(得分:0)

首先,请注意HTML(CSS)像素与屏幕像素不同。这是因为您可以缩放您正在查看的页面 - 这不会影响其CSS维度(简单地说,HTML布局不会&#34;注意&#34;缩放),而是会改变多少个屏幕您在CSS像素中拥有的像素。

当您为屏幕上的WebView调用WebView.draw()时,它会根据WebView的当前大小绘制到画布上 - 基本上,您在屏幕上看到的是您将在位图中获得的内容。

因此,有两种方法可以做你想做的事:

  1. 使WebView宽度足够大以容纳您的页面。为此,您需要将WebView放在ScrollView内,并相应地设置WebView的宽度。

  2. 调整显示内容的大小,使其适合屏幕。为此,您可以使用两个WebView设置:setUseWideViewport(true)setLoadWithOverviewMode(true)以及initial-scale HTML标记中的<meta name="viewport">值。