1、WebView不會自動換行,它會把連在一起的字母當成一個表情或者單詞,或者,當遇到一個完整的URL鏈接時,會強制把URL放在一行,導致WebView可以左右滑動
解決方法:這中問題不是WebView設置能夠解決的,我們需要改動HTML的代碼,在返回的HTML代碼前直接拼接下邊代碼:
//就是有時候web view不會自動換行,它會把連在一起的字母或者表情當作是一個單詞,
// 直接顯示在后面,不自動換行就造成了在webView中顯示不全的現象。
String pre="<body style=\"word-wrap:break-word;\"> </body>";
2、修改客戶端修改返回的HTML代碼中的字體顏色:
解決方法:通過js修改
1、 //設置WebView啟用js
wb.getSettings().setJavaScriptEnabled(true);
2、重寫WebViewClient中的onPageFinished方法
wb.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//修改字體顏色
view.loadUrl("javascript:function modifyTextColor(){" +
"document.getElementsByTagName('body')[0].style.webkitTextFillColor='#E6E6E6'" +
"};modifyTextColor();");
}
});
3、HTML中圖片太大時,會導致WebView可以左右滑動
解決方法:通過js修改
1、 //設置WebView啟用js
wb.getSettings().setJavaScriptEnabled(true);
2、關閉自動適應
wb.getSettings().setUseWideViewPort(false);
wb.getSettings().setLoadWithOverviewMode(false);
3、//重寫WebViewClient中的onPageFinished方法
wb.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//修改圖片大小
int screenWidth = ScreenUtils.getScreenWidth(MessageDetailActivity.this);
String width = String.valueOf(screenWidth- DensityUtil.dp2px(MessageDetailActivity.this,50));
String width2=String.valueOf(DensityUtil.px2dp(MessageDetailActivity.this,screenWidth)-40);
String javascript = "javascript:function ResizeImages() {" +
"var myimg,oldwidth;" +
"var maxwidth = document.body.clientWidth;" +
"for(i=0;i <document.images.length;i++){" +
"myimg = document.images[i];" +
"if(myimg.width > "+width2+"){" +
"oldwidth = myimg.width;" +
"myimg.width ="+width2+";" +
"}" +
"}" +
"}";
view.loadUrl(javascript);
view.loadUrl("javascript:ResizeImages();");
}
});