0

对于一个项目,我希望用户能够放大和缩小 WebView,但我不希望用户能够将图像缩小到底部显示空白(WebViewmatch_parent用于 widthheight)。

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

我怎样才能实现这样的功能?

4

4 回答 4

2

通常,要使您的应用程序在所有设备上始终如一地工作,您必须将其设置为:

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.

浏览器布局.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>

浏览器.java: :

导入android.app.Activity;导入android.os.Bundle;导入 android.webkit.WebView;

公共类浏览器扩展活动{

/** 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+。

于 2013-06-07T10:01:37.207 回答
1

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

在这里您可以根据自己的意愿更改 minimum-scale=1

于 2013-06-07T09:52:25.507 回答
0

查看webSettings类。例子:

webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
于 2013-06-07T09:52:38.253 回答
0

您可以为此使用WebSettings.ZoomDensity功能。使用它可以设置 setDefaultZoom。

于 2013-06-07T09:55:36.997 回答