WebView属性使用

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;

            }

        }

    };

你可能感兴趣的:(WebView属性使用)