WebView自适应内容

36

在 WebView 中加载 URL 并将其调整大小以适应屏幕是否可能?我的意思是,我想让网页变小,这样用户就不需要滚动。这是否可行?

10个回答

18

您也可以尝试为此设置布局算法。这对我有效。

webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

2
这个仍然在 Android 操作系统版本低于 2.2 上崩溃。 http://code.google.com/p/android/issues/detail?id=5024 - capecrawler
这是我唯一可行的解决方案,因为它实际上将页面适配到内容。其他一些解决方案在技术上可能有效,但偶尔会出现加载页面时缩放过多并且内容周围有额外空间的情况。需要注意的是,LayoutAlgorithm在2.2版本之后被弃用,但在4.0中又被取消弃用。也就是说,在中间的sdk中仍然可以使用。 - Dave
请不要使用此答案。在最新的 Web 视图代码中,它已被弃用。 - AndroidEngineX

17

将初始比例设置为1。然后缩放以填充屏幕。尚未测试此方法在非常长的网站上的效果(例如,具有大量评论的博客文章),但它适用于Droid X和带有标准网页的HTC Aria。

WebView.setInitialScale(1);

我将继续测试不同的网页,但目前这是我为此问题提供的最佳解决方案。

编辑:在Droid X和Aria上测试了一个非常长的网页,结果都是正面的。将初始比例设置为0似乎把整个东西关闭,导致初始比例为100。我对这些结果感到满意,希望能帮助其他遇到此问题的人。


1
我遇到了非常类似的问题,这个解决方案最终对我起作用了。谢谢! - Ryan Berger

11
wb.getSettings().setLoadWithOverviewMode(true);
wb.getSettings().setUseWideViewPort(true);

3
webview_settings.setLoadWithOverviewMode(true);
webview_settings.setUseWideViewPort(true);
webview_settings.setBuiltInZoomControls(true);

2

通过以下操作,我可以将整个页面包含在我的视图中。首先将宽度和高度设置为wrap_content。然后将初始缩放比例设置为1,如下所示:

WebView webview = (WebView) currentActivity.findView(R.layout.web_view, R.id.webview);
webview.setInitialScale(1);

我发现可以通过以下方式将宽度保持在最小限度,以便显示可读的字体并在每次沿y坐标滚动时进行。首先将高度和宽度都设置为wrap_content。然后在代码中将缩放密度设置为far,如下所示:

WebView webview = (WebView) currentActivity.findView(R.layout.web_view, R.id.webview);
webview.getSettings().setDefaultZoom(ZoomDensity.FAR);

大多数情况下,这可能是更好的解决方案。考虑一下,如果您完整地显示以下网页,那么字体会变得多小:


2
你尝试过反复调用WebView.zoomOut()直到返回false吗?
此外,我需要指出的是,你想使用的这种技术实际上非常依赖于网页的长度。如果页面很长,你缩小到适合屏幕的大小,用户将需要非常好的视力!;)

嘿,谢谢...我还没有检查它,但我想在完成这里的某些正式手续后会尝试一下...非常感谢... - JaVadid

1
webview.setInitialScale(number);

数字越高,页面缩放得越多。从较低的数字(如10)开始,根据个人喜好进行调整。


1
使用此代码可根据屏幕大小调整您的 Webview。
setScrollContainer(false);

0
如前所述,过度缩小不是用户喜欢的事情,因为它会降低内容的可读性。
我建议尝试设置缩放控件,但是我不知道在2.1版本中是否有效。
webview.getSettings().setBuiltInZoomControls(true);

希望这可以解决问题,因为现在你让用户有控制改变缩放级别。

0

我在对话框中使用了WebView的WRAP_CONTENT来设置宽度和高度,虽然当网页变得太大时,WebView会将所有其他小部件都推出屏幕。

安卓的布局系统相当不直观!


你不能这么说!你使用了WRAP_CONTENT,如果你需要它保持相同的大小而不根据网页的大小改变,那为什么不定义它的高度和宽度呢...这将会解决你的问题! - JaVadid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接