android webview超过全宽响应网站

时间:2015-03-17 02:55:07

标签: android css webview

我有一个简单的网页浏览:

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

这就是这样称呼的:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView myWebView = (WebView) findViewById(R.id.webview);
        myWebView.loadUrl("http://example.com");
    }

问题是我尝试渲染的网站没有进入响应模式。宽度超出了屏幕,导致我滚动。

我尝试过宽度,包括:fill_parent,match_parent和wrap_content,但都没有。

如何才能使网页呈现自适应,保持在屏幕范围内而不会水平滚动?

3 个答案:

答案 0 :(得分:13)

您缺少一些使WebView更像移动浏览器的设置调用:

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

您也可以选择启用缩放缩放:

myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setDisplayZoomControls(false);

正如@Hylianpuffball正确指出的那样,您的网站应该使用<viewport>标签来控制其展示。

答案 1 :(得分:0)

我已经找到了使用setScale正确渲染webview的最佳方法:

webView.setInitialScale((int) (getScale());

是getScale方法使用这个算法来计算屏幕大小:

metrics.density * 10

然后你可以用一个小于1.5的值来使用比例因子来微调它

答案 2 :(得分:0)

错误显示在行中

webView.setInitialScale((int)(getScale());