2012-03-19 105 views
6

我有webview和layout_height =“wrap_content”。如果我增加默认字体大小,则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有相同的问题。虽然在ScrollView中使用它可能不聪明... – 2013-04-17 07:04:16

回答

-6

试试这个

<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 wrap content和height fill parent? – Dmitriy 2012-03-19 05:27:53

+0

我不能接受这个答案。该问题询问如何将其设置为“wrap_content”,并且您建议使用固定高度(fill_parent)。当然,然后webview有一个不变的高度... – 2013-04-17 07:05:08

+0

@Dmitriy你如何解决这个问题? – 2014-01-09 07:05:15

2

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

如果你真正想要的是一个的WebView包装您的内容看起来是唯一的变通的每当你的内容发生变化时(当瞄准低内存设备时这可能是不可接受的),就要创建一个新的WebView。无论如何,这是我采用的解决方案。

+0

谷歌从KitKat 4.4开始标记为固定,但我还没有测试过。 – 2014-01-27 08:26:54

1

这个问题应该在KitKat WebView中解决。

对于KitKat之前的WebView版本,我没有任何好的解决方法。改变WebView的宽度应该强制进行高度重新计算,但它也可能导致视觉干扰。

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

+1

我有同样的问题,我的网络视图应用应该有不同的字体大小,当我增加字体大小,然后返回较小的字体大小,网络视图导致这么多空的空间。有没有办法解决这个问题? – 2014-03-21 13:43:38

-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 2015-03-12 18:56:02

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 2015-10-20 10:38:37

+1

检查你的里面的HTML与CSS边界红线检查是否有任何事情与页面本身.. – aimiliano 2015-10-20 21:20:32

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。