2012-03-19 32 views
6

私はlayout_height = "wrap_content"でwebviewを持っています。デフォルトのフォントサイズを大きくすると、Webviewの高さも高くなります。しかし、デフォルトのフォントサイズを小さくすると、Webviewの高さが下がりません。したがって、底には空きスペースが残っています。WebView height = wrap_contentとフォントサイズの変更がありません

私が試した次のトリック:

articleContent.getSettings().setDefaultFontSize(fontSize); 
RelativeLayout.LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
layoutParams.addRule(RelativeLayout.BELOW, subtitleTextView.getId()); 
articleContent.setLayoutParams(layoutParams); 

しかし、それは助けにはなりませんでした。私は既定のフォントサイズを変更するときにWebViewをコードで再現して修正する方法があることを知っていますが、私の状況ではそうはできません。私はwebviewを維持する必要があります。なぜなら、それにはいくつかの意見がありますし、私もそれらを再作成することはできません。

+1

異なる長さのコンテンツを読み込むときに、ScrollViewのWebViewで同じ問題が発生します。しかし、スクロールビューでそれを使用するのは賢明ではないかもしれません... –

答えて

-6

問題がここにAndroidの課題追跡を参照され

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
<WebView 
    android:id="@+id/webview1" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" /> 

</LinearLayout> 
+0

これが何を助けるべきでしょうか? Webviewを線形レイアウトにラップするか、witdhラップのコンテンツと高さの塗りつぶしの親を設定しますか? – Dmitriy

+0

私はその答えを受け入れることができません。その質問に "wrap_content"を設定する方法と、固定された高さを代わりに提案する(fill_parent)という質問があります。もちろん、webviewは一定の高さを持っています... –

+0

@Dmitriyどのようにこの問題を解決しましたか? –

2

これを試してみてください。
https://code.google.com/p/android/issues/detail?id=18726

何が本当にしたいことは、あなたのコンテンツをラップWebViewのであれば、それは、唯一の回避策のように見えますコンテンツが変更されるたびに新しいWebViewを作成することです(これは、低メモリデバイスを対象とする場合には受け入れられない場合があります)。それは私がとにかく採用した解決策です。

+0

GoogleはKitKat 4.4から修正済みとマークしましたが、まだテストしていません。 –

1

この問題は、KitKat WebViewで修正する必要があります。

私が知っている良い回避策はありません。 WebViewの幅を変更すると、高さの再計算が強制されますが、視覚障害につながる可能性もあります。

一時的に高さ0を強制してからwrap_contentsに戻すと余分なパディングも取り除かなければならないと思います。

+1

私は同じ問題を抱えています。私のウェブビューアプリケーションは、フォントサイズを大きくしてから小さいフォントサイズに戻すと、フォントサイズが違うはずです。それを修正する方法はありますか? –

-3

次の組み合わせ試してみてください。

<LinearLayout 
    android:id="@+id/xxxxxxxxxxxxxxxxxxx" 
    android:layout_width="match_parent" 
    android:layout_height="200dp" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/yyyyyyyyyyyyyyyyyyyyy" 
     style="@style/Etiquetas" 
     android:text="@string/hola" /> 

    <WebView android:paddingLeft="10dp" 
     android:id="@+id/zzzzzzzzzzzzzzz" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@null" > 
    </WebView> 

</LinearLayout> 

のJava:

LinearLayout. LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 
xxxxxxxxxxxxxxxxxxx.setLayoutParams(params); 
WebView zzzzzzzzzzzzzzz = (WebView) findViewById(R.id.zzzzzzzzzzzzzzz); 
zzzzzzzzzzzzzzz.setBackgroundColor(0x00000000); 
zzzzzzzzzzzzzzz.loadData(Html.fromHtml(mistringsqlite).toString(), "text/html", null); 
+0

この回答は、その長さと内容のために低品質であるとフラグされています。 – Jordan

1

webview.setVisibility(View.GONE); 
webview.setVisibility(View.VISIBLE); 
1

ちょうどこの

LinearLayout.LayoutParams wv_l = new 

    LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 

           wv.setLayoutParams(wv_l); 
+0

それは私のためには機能しません。空白はまだそこにあった。 – YeeKhin

+1

あなたの内側のHTMLをCSS境界線の赤線でチェックして、ページ自体と関係があるかどうかを確認してください。 – aimiliano

3
を追加し、これを試してみてくださいを

実際に動作する唯一の解決策は、Androidオープンソースプロジェクトに付属のcom.android.emailクライアントです。そこには、wrap_contentで動作するRigidWebViewがあり、コンテンツが変更されたときにそれに応じてサイズが変更されます。このため、ソースコードはここで見つけることができます:

https://android.googlesource.com/platform/packages/apps/Email/+/c19c1226da4a32e49e81c202478384f0348bcfef/src/com/android/email/view/RigidWebView.java

あなたはそれに付属している時計やスロットルのクラスが必要になりますが、それはあなたのアプリケーションで動作するように、コードに若干の変更で、あなたはそれを作ることができます。通常、WebViewを定義する場所であれば、代わりにRigidWebViewを使用できます。

関連する問題