WebSettings
WebSettings webSettings = mWebView.getSettings();
常用属性如下
webview.requestFocusFromTouch();//支持获取手势焦点,输入用户名、密码或其他
setJavaScriptEnabled(true);//支持js
setPluginsEnabled(true);//支持插件
webSettings.setRenderPriority(RenderPriority.HIGH);//提高渲染的优先级设置自适应屏幕,两者合用
setUseWideViewPort(true);//将图片调整到适合webview的大小
setLoadWithOverviewMode(true);// 缩放至屏幕的大小
setSupportZoom(true);//支持缩放,默认为true。是下面那个的前提。
setBuiltInZoomControls(true);//设置内置的缩放控件。
//若上面是false,则该WebView不可缩放,这个不管设置什么都不能缩放。
setDisplayZoomControls(false);//隐藏原生的缩放控件
setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);//支持内容重新布局
supportMultipleWindows();//多窗口
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//关闭
webview中缓存 setAllowFileAccess(true);//设置可以访问文件
setNeedInitialFocus(true);//当webview调用requestFocus时为webview设置节点
setJavaScriptCanOpenWindowsAutomatically(true);//支持通过JS打开新窗口
setLoadsImagesAutomatically(true);//支持自动加载图片
setDefaultTextEncodingName("utf-8");//设置编码格式
H5---->localStorage问题
问题:弹框提示,你未设置无痕浏览模式,不能浏览所有功能
解决如下:
settings.setCacheMode(WebSettings.LOAD_DEFAULT);//根据cache-control决定是否从网络上取数据。。
settings.setDomStorageEnabled(true);
settings.setAppCacheMaxSize(1024*1024*8);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
settings.setAppCachePath(appCachePath);
settings.setAllowFileAccess(true);
settings.setAppCacheEnabled(true);
WebView------------>scheme跳转问题
比如要跳转到 String url = "test://main.app"
WebViewClient webViewClient = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(final WebView view, String url) {
if (url.startsWith("http") || url.startsWith("https")) { //http和https协议开头的执行正常的流程
return false;
} else { //其他的URL则会开启一个Acitity然后去调用原生APP
Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
if (in.resolveActivity(getPackageManager()) == null) {
//说明系统中不存在这个activity
view.post(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "应用未安装", Toast.LENGTH_SHORT).show();
view.loadUrl(failUrl);
}
});
} else {
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(in);
//如果想要加载成功跳转可以 这样
view.post(new Runnable() {
@Override
public void run() {
view.loadUrl(successUrl);
}
});
}
return true;
}
}
};