118

デバイスの画面サイズに基づいて Web ページに合わせて次のことを試しました。

mWebview.setInitialScale(30);

次に、メタデータのビューポートを設定します

<meta name="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=0;"/>
<meta name="viewport" content="width=device-width, target-densityDpi=medium-dpi"/>

しかし、何も機能しません.Webページはデバイスの画面サイズに固定されていません.

誰かがこれを取得する方法を教えてもらえますか?

4

22 に答える 22

315

これを使用できます

    WebView browser = (WebView) findViewById(R.id.webview);
    browser.getSettings().setLoadWithOverviewMode(true);
    browser.getSettings().setUseWideViewPort(true);

これにより、画面サイズに基づいてサイズが修正されます。

于 2011-09-20T05:17:24.033 に答える
89

30 に設定するのではなく、手動で使用する必要があるスケールを計算する必要があります。

private int getScale(){
    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = display.getWidth(); 
    Double val = new Double(width)/new Double(PIC_WIDTH);
    val = val * 100d;
    return val.intValue();
}

次に使用します

WebView web = new WebView(this);
web.setPadding(0, 0, 0, 0);
web.setInitialScale(getScale());
于 2010-10-12T16:05:34.027 に答える
39

友達、

私はあなたから多くのインポートと素晴らしい情報を見つけました. しかし、私にとって唯一の方法は次の方法でした:

webView = (WebView) findViewById(R.id.noticiasWebView);
webView.setInitialScale(1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.loadUrl("http://www.resource.com.br/");

会社のデバイスの種類のために、私はAndroid 2.1に取り組んでいます。しかし、それぞれの情報の一部を使用して問題を修正しました。

ありがとうございます!

于 2012-02-29T13:12:57.573 に答える
38

これらの設定は私のために働いた:

wv.setInitialScale(1);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setJavaScriptEnabled(true);

私の試行ではsetInitialScale(1)がありませんでした。

setUseWideViewPortがtrueに設定されている場合、ドキュメントには0が完全にズームアウトすると書かれていますが、0は機能せず、1を設定する必要がありました。

于 2012-05-30T11:42:07.003 に答える
25

この HTML5 のヒントを試してください

http://www.html5rocks.com/en/mobile/mobifying.html

これにより、Android バージョンが 2.1 以降の場合

  WebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
于 2012-02-15T00:25:44.037 に答える
15

あなたがする必要があるのは、単に

webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
于 2014-07-17T03:23:46.457 に答える
14

これらは私にとってはうまくいき、WebViewを画面幅に合わせます:

// get from xml, with all size set "fill_parent"  
webView = (WebView) findViewById(R.id.webview_in_layout);  
// fit the width of screen
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 
// remove a weird white line on the right size
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);  

上記のアドバイスとEclipse Webビューの白い線に感謝します

于 2012-11-01T08:29:28.530 に答える
7
WebView browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setLoadWithOverviewMode(true);
browser.getSettings().setUseWideViewPort(true);
browser.getSettings().setMinimumFontSize(40);

.setLoadWithOverViewMode と .setUseWideViewPort によってテキスト サイズが非常に小さく設定されているため、これはうまく機能します。

于 2014-03-20T12:01:18.797 に答える
5

この場合、webView で HTML を使用する必要があります。次のコードを使用してこれを解決しました

webView.loadDataWithBaseURL(null,
                "<!DOCTYPE html><html><body style = \"text-align:center\"><img src= "
                        + \"http://www.koenvangorp.be/photos/2005_09_16-moon_2000.jpg\"
                        + " alt=\"pageNo\" width=\"100%\"></body></html>",
                "text/html", "UTF-8", null);
于 2013-01-09T11:30:44.837 に答える
5

display.getWidth(); 以降の danh32 による回答の変更 現在は推奨されていません。

private int getScale(){
    Point p = new Point();
    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    display.getSize(p);
    int width = p.x; 
    Double val = new Double(width)/new Double(PIC_WIDTH);
    val = val * 100d;
    return val.intValue();
}

次に使用します

WebView web = new WebView(this);
web.setPadding(0, 0, 0, 0);
web.setInitialScale(getScale());
于 2015-04-03T20:45:21.830 に答える
4

これは XML の問題のようです。Web ビューを含む XML ドキュメントを開きます。上部のパディング コードを削除します。

次に、レイアウトに追加します

android:layout_width="fill_parent"
android:layout_height="fill_parent"

Web ビューで、追加します。

android:layout_width="fill_parent"
android:layout_height="fill_parent" 

これにより、Web ビューがデバイスの画面にフィットします。

于 2015-10-19T01:19:12.157 に答える
3
int PIC_WIDTH= webView.getRight()-webView.getLeft();
于 2010-11-21T23:54:33.277 に答える
2

これは、Web ページに従ってエミュレーターを調整するのに役立ちます。

WebView wb;
//CALL THIS METHOD
wb.setInitialScale(50);

上記のように、初期スケールをパーセンテージで設定できます。

于 2011-12-07T10:07:13.273 に答える
2

Display オブジェクトの getWidth メソッドは廃止されました。onSizeChanged をオーバーライドして、使用可能になったときに WebView のサイズを取得します。

WebView webView = new WebView(context) {

    @Override
    protected void onSizeChanged(int w, int h, int ow, int oh) {

        // if width is zero, this method will be called again
        if (w != 0) {

            Double scale = Double.valueOf(w) / Double.valueOf(WEB_PAGE_WIDTH);

            scale *= 100d;

            setInitialScale(scale.intValue());
        }

        super.onSizeChanged(w, h, ow, oh);
    }
};
于 2013-02-01T02:29:54.980 に答える
1

理論的には、次の組み合わせ:

settings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); 

settings.setUseWideViewPort(false)

問題を修正し、コンテンツをラップして画面に合わせます。ただし、NARROW_COLUMNSは廃止されました。この問題を詳しく調べる以下のスレッドを読むことをお勧めします: https://code.google.com/p/android/issues/detail?id=62378

于 2014-06-03T22:37:58.193 に答える
1

参考までに、これは @ danh32 のソリューションの Kotlin 実装です。

private fun getWebviewScale (contentWidth : Int) : Int {
    val dm = DisplayMetrics()
    windowManager.defaultDisplay.getRealMetrics(dm)
    val pixWidth = dm.widthPixels;
    return (pixWidth.toFloat()/contentWidth.toFloat() * 100F)
             .toInt()
}

私の場合、幅は 3 つの画像によって 300 ピクセルになるように決定されました。

webview.setInitialScale(getWebviewScale(300))

この投稿を見つけるのに何時間もかかりました。ありがとう!

于 2020-06-16T07:12:35.817 に答える