2012-03-19 106 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。