版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qugengting/article/details/84770831
基本设置:
protected void initWebView() {
webView.getSettings().setJavaScriptEnabled(true);
// webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
//优先使用网络
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
//将图片调整到适合webview的大小
webView.getSettings().setUseWideViewPort(true);
//支持内容重新布局
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
//支持自动加载图片
webView.getSettings().setLoadsImagesAutomatically(true);
//当webview调用requestFocus时为webview设置节点
webView.getSettings().setNeedInitialFocus(true);
//自适应屏幕
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
//开启DOM storage API功能(HTML5 提供的一种标准的接口,主要将键值对存储在本地,在页面加载完毕后可以通过 javascript 来操作这些数据。)
webView.getSettings().setDomStorageEnabled(true);
//支持缩放
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setSupportZoom(true);
//允许webview对文件的操作
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
webView.requestFocusFromTouch();
}
设置返回键效果:
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) { // 表示按返回键时的操作
webView.goBack(); // 后退
// webview.goForward();//前进
return true; // 已处理
}
}
return false;
}
});
跳转会弹出浏览器APP选择框:
解决方法:添加setWebViewClient监听事件:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(url);
return true;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return true;
}
});