2016-10-05 14 views
8

の中にWebViewandroid:layout_height="wrap_content"があります。 Android 7以前では、WebViewはloadDataで設定したローカルHTMLコンテンツの高さにリサイズしました。 Android 7搭載のNexus 5Xでは、WebViewの高さが信頼できないように見えることがあります。最初のテキスト行の一部しか表示されない場合があります。コンテンツの最後に大きなギャップがあることがあります。
NougatからWebViews for Chromeを使用しているGoogleが原因である可能性があります。 誰かがこの問題の説明または修正/回避策を持っていますか?wrap_contentのあるAndroid 7 WebView

ビューがRecyclerViewのセルに含まれていることも重要です。

+0

コンテンツを表示するためにWebViewを使用することは少し危険です –

答えて

1

を使用するWebView RecyclerView内のコンテンツを表示することは少し危険です。効率的ではありません。異なるデバイスでどのように動作するかわからない!

は私がのTextViewを使用してちなみに、このコマンド

textView.setText(Html.fromHtml(<YOUR HTML CONTENT>)) 

を使用してフォーマットされたテキストにHTMLコンテンツを変換するソリューションを変更することをお勧め、これらはいくつかを示すために固定サイズを達成するために、私はWebViewので行っているいくつかの努力があります広告バナーの内容:

public class AdsWebView extends WebView { 

// some setup codes... 
private static final int MAX_SCALE = 120; 

public AdsWebView(Context context) { 
    setVerticalScrollBarEnabled(false); 
    setHorizontalScrollBarEnabled(false); 
    setScrollbarFadingEnabled(false); 

    setupAdsScale(); 
} 

private int getAdsScale() { 
    int width = getDisplayWidth(getContext()); 
    Double val = Double.valueOf(width)/Double.valueOf(480); 
    val = val * 100d; 
    return val.intValue(); 
} 


private void setupAdsScale() { 
    int scale = getAdsScale(); 

    if (scale > MAX_SCALE) 
     scale = MAX_SCALE; 

    setInitialScale(scale); 
} 

private int getDisplayWidth(Context context) { 
    try { 
     Activity activity = (Activity) context; 
     if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) < 13) { 
      Display display = activity.getWindowManager() 
        .getDefaultDisplay(); 
      return display.getWidth(); 
     } else { 
      Display display = activity.getWindowManager() 
        .getDefaultDisplay(); 
      Point size = new Point(); 
      display.getSize(size); 
      return size.x; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return 0; 
    } 
} 
+0

私はすでにこの解決策を知っていましたが、実際はリッチコンテンツをサポートする必要があるため、TextViewより多くのタグがサポートします。しかし、あなたのサポートに感謝します! – Alf

1

回避策がある:htmlページがロードされ、コンテンツheighを検出するために、ページ内のJSを実行される一方で待っ

WebViewレイアウトパラメータの高さに設定します。

ページ内でJSを実行し、ここでhttps://developer.android.com/guide/webapps/webview.htmlアンドロイドへ(バインドJavaScriptコードを説明するように、ちょうどあなたは、Java-Javaスクリプト・インターフェースを提供しなければならないJavaコードに結果を渡すには

javascript:Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight); 

のようなURLに移動するのは簡単です必見をナビゲートするためのコード)

URLがmyfunc関数が呼び出され、ページの高さを取得します

javascript:myfunc(Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight)); 

のように見えます。今度は高さをWebViewの高さに設定するだけです。