在最近的項目開發中,使用webview加載html頁面,這樣可以節省大量頁面開發的時間,同時也可加快項目進度。
我們需求是需要顯示商品評論,頁面設計如下:

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
webView.getSettings().setDefaultTextEncodingName("UTF-8");
在展示資料的時候,出現問題。實際效果如下:
這裡物流速度和産品品質無法顯示.
html的關鍵代碼如下:
switch (jsonForCreat.DATA[i].QUALITYLEVEL){
case '1':
$("#q"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 515px");
break;
case '2':
$("#q"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 535px");
break;
case '3':
$("#q"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 555px");
break;
case '4':
$("#q"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 575px");
break;
case '5':
$("#q"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 595px");
break;
default :
$("#q"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 595px");
break;
}
switch (jsonForCreat.DATA[i].SPEEDLEVEL){
case '1':
$("#s"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 515px");
break;
case '2':
$("#s"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 535px");
break;
case '3':
$("#s"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 555px");
break;
case '4':
$("#s"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 575px");
break;
case '5':
$("#s"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 595px");
break;
default :
$("#s"+jsonForCreat.DATA[i].KEY_ID).css("background-position", "0px 595px");
break;
}
在仔細對比所有的資料格式無誤,對比ios,發現:
同樣的html頁面,同樣的資料,這個頁面在ios上顯示正常,在android上就是無法顯示物流速度和産品品質的評價星數。
最後在比對webview設定的時候,将webview屬性
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
注釋掉以後,發現顯示正常了,
查詢資料得知:
SINGLE_COLUMN:把所有内容放到WebView元件等寬的一列中。
這個屬性至于為何與html顯示沖突,還不得而知,也希望有牛人能給予解答。