1 webview 使用 loadDataWithBaseURL 方法的时候是没有问题,但是在ScrollView下边使用的时候,在小米手机显示不了;
2 在webview 设置固定高度的时候在ScrollView是正常的,但是一般我们并不清楚高度是多少,那么解决的方法是
WebSettings ws = reservedView.wv_web.getSettings();
ws.setAppCacheEnabled(true);//启用localstorage本地存储api
ws.setLightTouchEnabled(true);//启用选中功能
ws.setDomStorageEnabled(true);//启用dom存储(关键就是这句),貌似网上twitter显示有问题也是这个属性没有设置的原因
ws.setDatabaseEnabled(true);//启用html5数据库功能
ws.setTextSize(WebSettings.TextSize.NORMAL);//通过设置WebSettings,改变HTML中文字的大小 (使用后字体变大)
ws.setJavaScriptEnabled(true);//设置js可用
// WebView中Http和Https混合问题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ws.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
//主要方法
reservedView.wv_web.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
reservedView.wv_web.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
//这里必须是这样的
reservedView.wv_web.loadUrl("javascript:App.resize(document.body.getBoundingClientRect().height)");
super.onPageFinished(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
}
});
reservedView.wv_web.addJavascriptInterface(this, "App");
reservedView.wv_web.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
reservedView.wv_web.setVerticalScrollBarEnabled(false);
reservedView.wv_web.setVerticalScrollbarOverlay(false);
reservedView.wv_web.setHorizontalScrollBarEnabled(false);
reservedView.wv_web.setHorizontalScrollbarOverlay(false);
重写resize方法
@JavascriptInterface
public void resize(final float height) {
runOnUiThread(new Runnable() {
@Override
public void run() {
int h = (int) (height * getResources().getDisplayMetrics().density);
reservedView.wv_web.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels,
h+40));
}
});
}