1. ホーム
  2. android

ウェブビューの初期ズーム/幅を設定する方法

2023-09-06 04:06:26

質問

私は、WebViewがアンドロイドブラウザと同様の動作をするようにしようとしています。 ブラウザは、画面に幅を合わせようとする方法ですべてのページを開きます。 しかし、WebView のデフォルトの動作は、100% ピクセル スケールで開始するため、左上隅にズームインした状態で開始されます。

ブラウザで行うように WebView が画面に合わせてページを拡大縮小する方法を見つけようと、この数時間を費やしましたが、うまくいきません。 どなたか、これを達成する方法を見つけた方はいらっしゃいますか?

私は、setLoadWithOverviewModeという設定を見ますが、それはまったく何もしないように見えました。 また、setInitialScale を実験しましたが、異なる画面サイズと Web ページ サイズでは、ブラウザのスケーリングほど優雅ではありません。

どなたか手がかりをお持ちではないでしょうか。

ありがとうございます。

編集: Brian の方法は、携帯電話を横向きにするとうまくいくようですが、縦向きではうまくいきません。 縦画面では、近いですが、まだページ内に画面全体を収めることはできません。 どのような向きや画面サイズでも、ページの幅に合うように初期ズームを行う確実な方法があることを期待して、このバウンティを開始しました。

どのように解決するのですか?

次のコードでは、デスクトップ版の Google ホームページを完全にズームアウトして 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です。

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();
        }
    }
}