WebView height = wrap_content更改字体大小不起作用

时间:2012-03-19 04:32:17

标签: android layout webview

我有webview with layout_height =“wrap_content”。如果我增加默认字体大小,那么webview高度也会增加。但是如果我减少默认字体大小,那么webview高度不会降低。所以剩下的底部有空的空间。

我尝试过以下技巧:

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,因为有一些观点,我也无法重新创建它们。

7 个答案:

答案 0 :(得分:4)

我发现实际工作的唯一解决方案是在Android开源项目附带的com.android.email客户端中。在那里,他们有一个RigidWebView,它与wrap_content一起使用,并在内容发生变化时相应地调整大小。这方面的源代码可以在这里找到:

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

您需要随附的Clock and Throttle类,但只需对代码进行细微更改,您就可以在应用程序中使用它。然后,在通常定义WebView的任何地方,您都可以使用RigidWebView。

答案 1 :(得分:2)

这个问题在这里引用了Android的问题跟踪器:
https://code.google.com/p/android/issues/detail?id=18726

如果您真正想要的是包含内容的WebView,那么目前唯一的解决办法是每次内容更改时创建一个新的WebView(在定位低内存设备时可能无法接受)。无论如何,这是我采用的解决方案。

答案 2 :(得分:1)

此问题应在KitKat WebView中修复。

对于KitKat之前的WebView版本,我知道没有任何好的解决方法。更改WebView的宽度应强制重新计算高度,但也可能导致视觉故障。

我认为暂时强制高度为0然后将其翻转回wrap_contents也应该摆脱多余的填充。

答案 3 :(得分:1)

试试这个,

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

答案 4 :(得分:1)

只需添加此

即可
LinearLayout.LayoutParams wv_l =  new 

    LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);

                                wv.setLayoutParams(wv_l);

答案 5 :(得分:-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>

爪哇:

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);

答案 6 :(得分:-8)

试试这个

<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>