如何设置webview的初始缩放/宽度

cot*_*aws 74 android scale width webview android-webview

我试图让WebView具有与Android浏览器类似的行为.浏览器以试图使其宽度适合屏幕的方式打开所有页面.但是,WebView的默认行为是以100%像素比例开始,因此它会在左上角开始放大.

我花了最近几个小时试图找到一种方法让WebView将页面缩放到屏幕,就像在浏览器中一样,但我没有运气.有人找到了实现这个目标的方法吗?

我看到的是一个名为setLoadWithOverviewMode的设置,但它似乎根本没有做任何事情.我还尝试了setInitialScale,但是在不同的屏幕尺寸和网页尺寸上,它们不像浏览器缩放那样优雅.

任何人有任何线索?

谢谢

编辑:布莱恩的方法似乎适用于手机在风景但不是肖像.在肖像中,它很接近,但仍然不适合页面中的整个屏幕.我开始这个赏金,希望有一个确定的方法来获得初始缩放以使页面适合任何方向或屏幕大小的页面宽度.

Bri*_*ian 156

以下代码webview在854x480像素的屏幕上加载完全缩小的Google主页的桌面版本以适合Android 2.2中的for me.当我重新定位设备并以纵向或横向方式重新加载时,页面宽度每次都完全适合视图.

BrowserLayout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

     <WebView android:id="@+id/webview"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Browser.java:

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class Browser extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.BrowserLayout);

        String loadUrl = "http://www.google.com/webhp?hl=en&output=html";

        // initialize the browser object
        WebView browser = (WebView) findViewById(R.id.webview);

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

        try {
            // load the url
            browser.loadUrl(loadUrl);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案对我来说也不起作用.我在内容的右侧和底部都有很多黑色空间.不过,我正在从资源文件夹而不是网页加载图像.这可能是为什么? (6认同)
  • setLoadWithOverviewMode仅适用于API 7+ (5认同)

gri*_*mdp 20

我弄清楚为什么纵向视图没有完全填满视口.至少在我的情况下,这是因为滚动条始终显示.除了上面的视口代码,请尝试添加以下内容:

    browser.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    browser.setScrollbarFadingEnabled(false);
Run Code Online (Sandbox Code Playgroud)

这会导致滚动条不占用布局空间,并允许网页填充视口.

希望这可以帮助


Iva*_*ART 12

这是一个古老的问题,但是让我添加一个细节,以防更多像我这样的人到达这里.

Brian发布的优秀答案在Jelly Bean中并不适合我.我还要补充一下:

browser.setInitialScale(30);
Run Code Online (Sandbox Code Playgroud)

参数可以是实现调整大小的内容小于webview宽度的任何百分比.然后setUseWideViewPort(true)将内容宽度扩展到webview宽度的最大值.


Bri*_*ian 7

尝试使用宽视口:

 webview.getSettings().setUseWideViewPort(true);
Run Code Online (Sandbox Code Playgroud)