安卓webview设置h5页面中window.open打开的高度
WebView内的页面高度设置安卓webview设置h5页面中window.open打开的高度安卓代码创建webview创建MyWebChromeClient设置window.open的高度完安卓webview设置h5页面中window.open打开的高度正常安卓和h5交互的时候,都是打开一个单纯的h5页面,如果该h5页面中,涉及到window.open打开其他链接的时候,有可能就导致不能正常打开
·
WebView内的页面高度设置
安卓webview设置h5页面中window.open打开的高度
正常安卓和h5交互的时候,都是打开一个单纯的h5页面,如果该h5页面中,涉及到window.open打开其他链接的时候,有可能就导致不能正常打开了。
安卓代码
创建webview
代码如下:
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setJavaScriptEnabled(true);//是否允许执行js,默认为false。设置true时,会提醒可能造成XSS漏洞
webview.getSettings().setSupportZoom(false);//是否可以缩放,默认true
webview.getSettings().setBuiltInZoomControls(false);//是否显示缩放按钮,默认false
webview.getSettings().setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
webview.getSettings().setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
// webview.getSettings().setUserAgentString("User-Agent:Android");//设置用户代理,一般不用
webview.addJavascriptInterface(new DataInteraction(this),
"JSBridge");
webview.setWebChromeClient(new MyWebChromeClient(getWindow(), WebViewActivity.this));
webview.setWebViewClient(myWebViewClient);
关键点:
1、新增MyWebChromeClient的实现
2、setJavaScriptCanOpenWindowsAutomatically
创建MyWebChromeClient
此MyWebChromeClient继承WebChromeClient
实现onCreateWindow方法
@Override
public boolean onCreateWindow(WebView view, boolean dialog,
boolean userGesture, Message resultMsg) {
newWebView = new WebView(view.getContext());
view.addView(newWebView);
WebSettings settings = newWebView.getSettings();
settings.setDefaultFontSize(12);
settings.setJavaScriptEnabled(true);
//newWebView.setInitialScale(view.getHeight()/3);
//这个setWebViewClient要加上,否则window.open弹出浏览器打开。
newWebView.setWebViewClient(new WebViewClient());
newWebView.setWebChromeClient(this);
ViewGroup.LayoutParams params= newWebView.getLayoutParams();
Display display = window.getWindowManager().getDefaultDisplay();
params.height=display.getHeight();
newWebView.setLayoutParams(params);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
}
一定要加这个
newWebView.setWebViewClient(new WebViewClient());
设置window.open的高度
获取当前view的高度,然后给新的窗口设置高度
ViewGroup.LayoutParams params= newWebView.getLayoutParams();
Display display = window.getWindowManager().getDefaultDisplay();
params.height=display.getHeight();
newWebView.setLayoutParams(params);
未设置高度前
看红色框展示的部分,即用window.open方式打开的页面
设置高度后
设置完以后就应该是全屏的这样子了
由于没有专门截取,就找了个视频的截图
完
更多推荐
已为社区贡献1条内容
所有评论(0)