在WebView上正確顯示HTML內容


在WebView上顯示HTML內容,包括英文以及中文。有3種方法可以有用:

(1)使用loadData方法。

這種方法需要先將HTML內容進行編碼,否則顯示的中文會有亂碼。

編碼方法為:

Java代碼    收藏代碼
  1. private String fmtString(String str){  
  2.     String notice = "";  
  3.     try{  
  4.         notice = URLEncoder.encode(str, "utf-8");  
  5.     }catch(UnsupportedEncodingException ex){  
  6.           
  7.     }  
  8.     return notice;  
  9. }  

 調用fmtString方法:

Java代碼    收藏代碼
  1. mWebView.loadData(fmtString(notice1), "text/html""utf-8");  

 

notice1是自定義的HTML字符串:

Java代碼    收藏代碼
  1. private String blank = "        ";  
  2.   
  3. private String notice1 = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>" +  
  4.     "<h3 align='center'>關於關閉電話銀行語音系統查詢動態密碼功能的公告</h3></head>"  
  5.     + "<body>"  
  6.     + "<p align='center'><i>發布日期:2011-04-25</i>"  
  7.     + "</p><p>尊敬的客戶:"  
  8.     + "</p><p>" + blank +  
  9.     "根據優化電話銀行相關服務功能的整體安排,我行決定自4月25日起,在95595電話銀行語音系統中,停止受理查詢手機動態密碼功能。給您帶來的不便之處敬請諒解。如有問題,請致電我行24小時服務熱線95595。"  
  10.     + "</p><p>" + blank +  
  11.     "感謝您長期以來對我行的關注、支持與厚愛!"  
  12.     + "</p><p>" + blank +  
  13.     "特此公告。"  
  14.     + "</p><p align='right'>中國光大銀行"  
  15.     + "</p><p align='right'>2011年4月25日</p></body></html>";  

 (2)使用loadDataWithBaseURL方法。

使用這個方法不需要先將HTML內容進行轉碼,直接可以顯示:

Java代碼    收藏代碼
  1. mWebView.loadDataWithBaseURL("about:blank", notice1, "text/html""utf-8"null);  

 (3)使用loadUrl方法。

使用這個方法的參數可以是網絡上的某個網址,例如

Java代碼    收藏代碼
  1. mWebView.loadUrl("http://www.baidu.com");  

 

也可以是本地的某個文件。這個文件必須存放在assets目錄下面:

Java代碼    收藏代碼
  1. mWebView.loadUrl("file:///android_asset/notice01.html");  

 以上3種方法可以顯示HTML內容在WebView上,但存有區別:

loadData方法顯示的HTML都是居左對齊,不管align的值是left|center|right,結果都是居左對齊,並且顯示中文的時候必須使用UrlEncoder進行編碼。

loadDataWithBaseURL可以使用align屬性,即可居左|居中|居右對齊,顯示中文不需要UrlEncoder進行編碼。

loadUrl顯示的內容來自網絡上或本地的某個問題。

 

 

原文:http://peterfeng.iteye.com/blog/1028881


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM