12

WebView 内に WebPage を表示したい。ここまでは大丈夫です。

しかし、私は WebPage (以下に示す) を持っており、その特定の部分が必要です。つまり、すべてのデバイスで画面モードに合わせて左上隅だけが表示されるはずです。

過去 2 3 日間、この問題を解決しています。

私が欲しいもの: 私はWebページの左上隅を表示してWebview内に表示したいのですが、戦略がズームまたはその他のオプションである可能性がありますが、すべてのデバイスの画面に収まる必要があります。

もう一つ、ウェブページのソースコードは修正済みのため、変更できません。 コード自体で管理する必要があります。

ここに画像の説明を入力

私が試したこと: Stackoverflow リンクを参照しましたが、運がありません。

これが私のコードです。:

            WebView wv;
        wv = (WebView) findViewById(R.id.webview_MyPoops);
        wv.getSettings().setJavaScriptEnabled(true);

        // wv.setInitialScale(185);

        // wv.setInitialScale(30);
        String URL = "MY_LINK";

        wv.loadUrl(URL);

        WebSettings webSettings = wv.getSettings();
        webSettings.setSavePassword(false);
        webSettings.setSaveFormData(false);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setSupportZoom(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setUseWideViewPort(true);

デバイスに表示される完全な Web ページを取得しています。

My LG デバイス (解像度が 480*800) では正常に動作しますが、Galaxy Tab2 のような大きなデバイスやタブでは、左上隅の非常に小さな画像が表示され、画面の他のすべての領域は Web ページの背景にすぎません。

以下は、上記のコードを実行した後の Galaxy Tab2 のスクリーンショットです。 ここに画像の説明を入力 私に欠けている提案があればお願いします。前もって感謝します。

4

5 に答える 5

1
WebView x;

x.setInitialScale(1);

これは、可能な最も遠いズームです。しかし、一部のサイトでは、純粋に醜く見えます。

これは私が見つけた2番目のバージョンでした

test1.getSettings().setDefaultZoom(ZoomDensity.FAR);

それは、多くの場合に十分にズームアウトしているように見えるよりも優れたオールラウンダーですが、それでも私が探していたものではありません.

そして今、ここに私が持っている最終的な解決策があります。

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

基本的にこれらが何をするかは、このような別の質問で答えられます。

setLoadWithOverviewMode(true) 

完全にズームアウトされた WebView を読み込みます

setUseWideViewPort(true)
于 2014-11-06T04:45:03.590 に答える
1

このコードホップを試してみてください。

webview.setInitialScale(getScale()); 



private int getScale(){
            Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
            int width = display.getWidth(); 
            Double val = new Double(width)/new Double(200);
            Log.e("hh", "** "+val);
            val = val * 100d;
            Log.e("hh", "** "+val);
            return val.intValue();
        }
于 2012-12-01T07:05:54.970 に答える
0

HtmlCleaner (使用方法の例はこちら) を使用してWebページから html を取得し、表示する部分を抽出して、次を使用して WebView にロードすることができます WebView.loadData();

モバイル デバイスで使いやすいように、アプリの 1 つでこの方法を使用してページを再フォーマットしました。

于 2012-11-25T23:08:39.643 に答える
0

HTML ページではtarget-densitydpi=240; 、デバイスの種類に応じて、Java コードからこのパラメーターを設定するだけで、ページがターゲット密度に自動的に収まるようにすることができます。

于 2013-01-11T15:15:12.850 に答える
0

修正は Web ページ レベルでのみ行うべきであり、理想的にWebViewはここでトリックを行うことはできません。WebViewWebページの指示に従ってレンダリングを行うだけのブラウザ(具体的にはクロムブラウザ)です。

問題を実際に解決するには、Web ページの CSS を変更してみてください。

于 2014-03-22T03:58:18.273 に答える