将网页内容适配到Webview中(Android)

31

简单的问题。

我正在尝试拉伸webview中的内容,以便整个网页都可以显示出来,即无需滚动。我查看了文档,但除了缩放控件和setinitialscale之外,找不到其他方法。

在这种情况下,setinitialscale的问题在于它对不同的网站有不同的工作方式。

例如: 1:维基百科将按预期加载,并将缩放足够远。 2:然而,Google只会显示页面的中心。

这是我拥有的代码片段

    test1 = (WebView) findViewById(R.id.webview_test_1);
    test2 = (WebView) findViewById(R.id.webview_test_2);
    test3 = (WebView) findViewById(R.id.webview_test_3);

    test1.getSettings().setJavaScriptEnabled(true);
    test2.getSettings().setJavaScriptEnabled(true);
    test3.getSettings().setJavaScriptEnabled(true);

    test1.setInitialScale(12);
    test2.setInitialScale(12);
    test3.setInitialScale(12);

    test1.loadUrl("http://developer.android.com/resources/tutorials/views/hello-tablelayout.html");
    test2.loadUrl("http://www.wikipedia.org/");
    test3.loadUrl("http://www.google.com");

test1.getSettings().setDefaultZoom(ZoomDensity.FAR);

这似乎是我正在尝试做的另一种选择,但我无法将其缩放到足够远的程度。


你现在能够将页面适配到Webview中吗? - Ravi
你有找到任何解决方案吗? - Sazzad Hissain Khan
3个回答

106

这样别人就可以将此作为未来的教程。

在安卓中,有很多处理缩放和适应页面的方法。有时候它可能相当棘手,某些方法比其他方法更有效。

对于大多数人来说,只需使用以下内容:

WebView x;

x.setInitialScale(1);

这是最大缩放比例了。但对于一些网站来说,它看起来非常丑陋。

这是我找到的第二个版本。

test1.getSettings().setDefaultZoom(ZoomDensity.FAR);

这是一个不错的多面手,能够以足够远的距离满足很多需求,但还不是我寻找的东西。

现在,这是我最终的解决方案。

x.getSettings().setLoadWithOverviewMode(true);
x.getSettings().setUseWideViewPort(true);

基本上这些是通过另一个问题得到回答的。

 setLoadWithOverviewMode(true) 

WebView完全缩小加载

setUseWideViewPort(true)

将Webview设置为正常的视口(例如普通的桌面浏览器),当值为false时,Webview的视口将被限制在其自身的尺寸内(因此如果Webview为50px * 50px,则视口大小将相同)


如果有人能更好地表达这个意思,我会接受它作为正确的答案。我不赞成给自己的答案打分,但我会给别人一个机会。 - OVERTONE
这是我在这个网站上找到的最好的这些设置的解释。 - Richard Le Mesurier
2
感谢,x.getSettings().setLoadWithOverviewMode(true); x.getSettings().setUseWideViewPort(true); 这对我很有效。 - Apperside
太棒了!非常好的答案,正是我想要的。真的很感激你不断努力提供这个问题的最终解决方案!声望加加! - cwiggo
很好的解释!@OVERTONE - i_ll_be_back

10

我尝试了以上的所有方法,但在我的情况下都没有起作用,直到我发现:

   <meta name="viewport" content="user-scalable=no"/>

删除HTML文件中的此行或仅更改user-scalable=yes,一切都会好起来。 我几乎花了一整天才找出这个疯狂的代码行。


我在哪里可以更改或添加这个? - Omid Omidi
这是HTML文件中的元标签。 您可以直接打开该HTML文件并在头部部分进行编辑。 - Hoang Nguyen Huu
太棒了!你的回答帮助了我。;-* - Sarasranglt
你能帮我解决这个问题吗?https://stackoverflow.com/questions/49098464/loading-gif-in-webview-not-adjusting-to-webview - StuartDTO

0

<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" />

我在 XML 布局文件中检查了我的 WebView,发现它的宽度和高度都有一些固定的值,然后,我用 "fill_parent" 替换了这些固定值,结果它确实起作用了。


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