2015-09-30 24 views
6

WebViewに空きスペースを追加しようとしています。JavaScriptを使用しています。Android WebViewの下部に奇妙な空白が追加される

リソースは、StringリソースからloadDataWithBaseUrl()を使用してデータをロードします。 次に、いくつかのコンテンツを測定した後、WebViewを100ピクセル分大きくする必要があります。 だから私はloadDataWithBaseUrl()を使用してJavaScript関数を呼び出す:

mWebView.loadUrl("javascript:addHeight()"); 

Javascript関数は、元のHTMLで定義されます。この後

function addHeight() { " + 
    var elemDiv = document.createElement('div'); 
    elemDiv.style.cssText = 'height:100px;'; 
    document.body.appendChild(elemDiv); 
} 

WebViewは、新しいコンテンツに合わせて自身のサイズを変更します。ただし、結果として得られる高さは元のサイズ+ 100ピクセルではありませんが、大きくなります。 問題がどこにあるのか分かりません。私はターゲットサイズを決定することができません。なぜなら、それは添付されたdivのサイズに依存し、常に異なるでしょう。

誰でもこれを試しましたか?あなたはこの行動に精通していますか?

+0

[コンテンツに応じてWebViewのサイズを動的に縮小する方法は?](http://stackoverflow.com/questions/15546416/how-to-shrink-webview-size-dynamically-according-to-its-コンテンツ) – e4c5

+0

あなたはもう少しコードを追加することができますので、私たちはより良い画像を得ることができますか? –

+0

JavaScriptのコードで 'window.innerHeight'または' window.outerHeight'によって報告された、WebViewビュー要素の高さ(Android側での)、またはページの大きさを「結果高さ」といいますか? –

答えて

2

I found the next solution。 JSコールバックを使用しました。これがあなたに役立つことを願っていますこのサイズの変更は、動的よりもうまくいくはずです。

private void setupWebView() { 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)"); 
      super.onPageFinished(view, url); 
     } 
    }); 
    webView.addJavascriptInterface(this, "MyApp"); 
} 
@JavascriptInterface 
public void resize(final float height) { 
    MyActivity.this.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      webView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density))); 
     } 
    }); 
} 

そして参照パラグラフ4 of this list。がんばろう!

+2

Android 5.1.1を使用すると、何も起こらないようです - LayoutParamsを設定してもWebViewはまったく変更されません。 – Hawk

関連する問題