因?yàn)槟撤N原因蝎毡,我們總是需要展示一些復(fù)雜的文本厚柳,Html.fromHtml()已經(jīng)不能滿足我們的需求,比如后臺(tái)可編輯的文本在前端顯示起來比較吃力沐兵,所以為了解決一些復(fù)雜的文本顯示就需要用到WebView别垮。
WebView in ScrollView
我們都知道ScrollView和WebView都有滾動(dòng)的效果,所以我們需要先屏蔽WebView的滾動(dòng)事件扎谎。
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants" >
中文亂碼
如果出現(xiàn)中文亂碼宰闰,你可以這樣設(shè)置
webView.loadData(body, "text/html; charset=utf-8", "utf-8");
Auto Scale
這時(shí)候如果后端如果傳過來的不是完整的Html,而是只有body部分的內(nèi)容簿透,那么我們就需要補(bǔ)充并添加一些css樣式來達(dá)到自適應(yīng)的效果移袍。
WebView webView = new WebView(this);
webView.setWebViewClient(new SimpleWebViewClient(title));
webView.getSettings().setDefaultTextEncodingName("utf-8");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);
} else {
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
}
webView.loadData(getHtmlData(body), "text/html; charset=utf-8", "utf-8");
別忘了頭部的設(shè)定:
private String getHtmlData(String bodyHTML) {
String head = "<head>" +
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"> " +
"<style>img{max-width: 100%; width:auto; height:auto;}</style>" +
"</head>";
return "<html>" + head + "<body>" + bodyHTML + "</body></html>";
}
End
最后,原本還擔(dān)心如何控制WebView的高度老充,沒想到WebView可以自己適應(yīng)內(nèi)容最長(zhǎng)的高度葡盗。再附上別人總結(jié)的WebView常見問題