2009-08-10 105 views

回答

7

我不確定我是否理解。 WebView只顯示您提供的HTML,因此您只需使用普通的HTML/CSS來修改顯示的內容。

+0

當然,但我想這樣做,而不是修改底層html。 – yanchenko 2009-08-10 17:14:53

+0

底層的HTML來自第三方嗎?你總是可以在最後注入javascript來修改它,然後從活動本身調用javascript來執行wvMyWebView.loadUrl(「call javascript function here」); – MattC 2009-08-10 18:05:21

2

當緩衝區是SPANNABLE時,直接修改HTML是一個理想的解決方案。字體,顏色,字體,風格都可以通過HTML影響:

String szMessage = "<font face='trebuchet' size=30><a href=zz><b>click me</b></a></font>"; 

TextView tv = (TextView)findViewById(R.id.tv_message); 
tv.setText(Html.fromHtml(szMessage), BufferType.SPANNABLE); 
22

String text = "<html><head>" 
      + "<style type=\"text/css\">body{color: #fff; background-color: #000;}" 
      + "</style></head>" 
      + "<body>"       
      + your_string_text_here 
      + "</body></html>"; 

webview1.loadData(text, "text/html", "utf-8"); 
5

這是我發現的最簡單的方法(改變文字顏色,例如白色):

webview.loadUrl("javascript:document.body.style.color=\"white\";"); 
+0

如何更改字體類型 – 2014-07-15 10:38:29

+0

請注意,您必須爲相關網頁視圖啓用javascript,否則該調用將無效 – sfera 2014-09-15 08:25:09

3

@ rafraph的回答對我無效。我不得不使用

webView.loadUrl("javascript:document.body.style.setProperty(\"color\", \"white\");"); 
7

我不得不把它放在onPageFinished方法中。

_webView.setWebViewClient(new WebViewClient() { 
    public void onPageFinished(WebView view, String url) { 
     _webView.loadUrl(
      "javascript:document.body.style.setProperty(\"color\", \"white\");" 
     ); 
    } 
}); 
1

,可以串聯使用CSS樣式十六進制顏色你的答案一個身體標記HTML,這是一個使用JSON響應的例子

第一:函數解碼JSON爲HTML格式

public String stripHtml(String html) { 
    return Html.fromHtml(html).toString(); 
} 

第二:在WebView中加載數據(無url)

String string_html; 
string_html = "&lt;body style=&quot;color:#535362;&quot;&gt;" + youStringHTML + "&lt;/body&gt;"; 
webView.loadDataWithBaseURL(null, stripHtml(string_html), "text/html", "utf-8", null); 
2

這對我有用