2011-02-17 54 views
14

如果我把這個HTML到WebView的Android的WebView正確處理新行預格式化文本

webView.loadData("<html><body><pre>line 1\nline 2</pre></body></html>", "text/html", "utf-8"); 

它呈現爲(在模擬器還取決於設備)

line 1line 2 

,而不是

line 1 
line 2 

如我所料。如果我將此HTML保存到SD卡並在瀏覽器中打開該文件,則呈現效果良好。我想我做錯了什麼,或者這可能是一個錯誤。無論如何,我想以編程方式將帶有預格式化換行符的HTML推送到WebView中,並呈現換行符。

回答

19

傳遞給loadData的字符串需要進行URI轉義。

您可以使用URLEncoder.encode()要做到這一點,但由於某種原因WebView'+'沒有解碼回' '。一種解決方法是自己將全部替換爲'%20'

例如(並與'+'翻譯):

try { 
    webview.loadData(URLEncoder.encode("<html><body><pre>line 1\nline 2</pre></body></html>", "utf-8").replaceAll("\\+", "%20"), "text/html", "utf-8"); 
} catch (UnsupportedEncodingException uee) { 
    Log.e("webview", "", uee); 
} 
+5

塔NKS!下一次,我會RTFM正常 – Axarydax 2011-02-18 08:09:02

+0

當我從服務器傳遞下載的html數據時,webview顯示我「頁面不可用」消息。這篇文章也幫助我解決了我的問題 – vokilam 2011-03-20 14:14:54

9

試試這個:

webView.loadDataWithBaseURL(...) 

更多信息here

2

您也可以使用

chapterWebView.loadDataWithBaseURL("file:///android_asset/NTImages/", message.replaceAll("\\n", "<br/>") , "text/html", "utf-8", "utf-8"); 
相關問題