是否可以为Android WebView设置最大缩放/比例?



对于一个项目,我希望用户能够在WebView上放大和缩小,但我不希望用户能够将图像放大到目前为止,它将在底部显示空白 (WebView是widthheightmatch_parent)。

换句话说:我想在webview上设置一个最大缩放/比例,最大缩放与图像高度相关,而不是宽度(我现在拥有的)。

如何实现这个功能?

通常情况下,为了让你的应用程序在所有设备上一致地工作,你必须这样设置:

this.appView.getSettings().setUseWideViewPort(true); this.appView.getSettings().setLoadWithOverviewMode(true); this.appView.getSettings().setSupportZoom(true); this.appView.getSettings().setDefaultZoom(ZoomDensity.FAR); this.appView.getSettings().setBuiltInZoomControls(true); this.appView.setInitialScale(0);

现在,你必须添加一个viewPort元标签:

<meta name="viewport" content="width=640,height=device-height,target-densityDpi=device-dpi,minimum-scale=1" />

您可以根据自己的喜好更改minimum-scale属性,以找到您最喜欢的匹配。

然而,有时你可能会遇到一个问题,当你重新调整设备的方向,它重新加载为纵向或横向。

为此,我通常使用以下代码加载桌面版本的谷歌主页完全缩小,以适应webview

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>

Browser.java::

进口android.app.Activity;进口android.os.Bundle;进口android.webkit.WebView;

浏览器扩展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();
    }
}

}

所以这里setUseWideViewPort(true)加载你的视图端口设置并将其缩放到所需的角色,或者你可以使用setLoadWithOverviewMode(),但它只适用于API 7+

<meta name='viewport' content='target-densitydpi=device-dpi,initial-scale=1,minimum-scale=1,user-scalable=yes'/> this添加到你要在webview中显示的html内容中

这里你可以根据自己的意愿改变minimum-scale=1

查看webSettings类。例子:

webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);

你可以使用WebSettings。缩放密度函数。使用它,您可以设置setdefaultoom .

最新更新