当我设置WebView的视口宽度时,其contentHeight似乎不正确

时间:2013-11-12 08:24:50

标签: android webview viewport android-websettings

我的目标是创建一个带有小边界的WebView,并使其平滑地设置为预定宽度的动画,以及包含其内容所需的任何高度,以给人一种扩展到其全尺寸的印象。

我不希望WebView的内容在动画期间重复重播,因此我尝试将视口宽度设置为动画的最终宽度。我通过添加

来实现这一目标

<meta name="viewport" contents="width=X" />

其中X是我想要的宽度。另外我用过:

WebSettings settings = webView.getSettings();
settings.setUseWideViewPort(true);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);

确保使用了视口标记,并且我的内容将超出我的网页视图的范围。

这是有效的(尽管我不使用wrap_content作为我的任何一个WebView维度的布局参数)。问题是,当我将视口扩展到WebView的宽度之外时,其内容高度会按比例扩展。

例如,如果我创建一个空项目来启动包含350x200px的WebView的活动,然后调用:

webview.loadData("<html><head><meta name=\"viewport\" content=\"width=450\" /></head></html>");

结果将是一个空的WebView,宽度为450 css像素,内容高度为257个设备像素。 257似乎来自200 * 450/350。

在实验之后,似乎在加载带有超出其宽度的视口的WebView之后,内容高度将始终是布局内容所需的高度的最大值,并且WebView的高度乘以视口的宽度除以WebView的宽度。

此外,如果在此布局发生后我增加了WebView的高度,contentHeight也会按比例增加。所以,在这一点上,无论我制作多大的WebView,它都会在内容下面留下一个空的可滚动空间。

所以,我有两个问题。首先,在布局发生后,我找不到我的WebView的适当最终高度,因为内容高度现在代表高度*(viewport_width / width)而不是内容所放置的高度。其次,即使我可以确定我的WebView的适当高度,如果我设置了这个高度,那么WebView将布置为在我的内容下面包含更多的空白空间。

我已经尝试在metatag中设置视口的height属性,这似乎没有任何效果。我假设这个问题是由于WebView在扩展时不想改变视口的宽高比。有没有人知道如何解决这个限制?有没有办法在没有垂直滚动的情况下实现水平滚动?

感谢您提供任何帮助或建议!

0 个答案:

没有答案