Vik*_*alp 10 android popupwindow android-webview
我在我的应用程序中有webview,我希望它在单击webview中的链接时打开弹出窗口.我添加了以下代码,但它不起作用: -
WebSettings webSettings = webViewPage.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportMultipleWindows(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
Run Code Online (Sandbox Code Playgroud)
弹出窗口应该是这样的
Vik*_*alp 24
经过3年的漫长岁月,我正在回答我自己的问题:
当在网页内触摸链接时,根据网页实现,有两种可能的情况:1)链接将在同一窗口中打开.2)链接将在新窗口中打开.
那么使用下面的代码很容易处理第一种情况:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
Run Code Online (Sandbox Code Playgroud)
在WebViewClient实现中覆盖shouldOverrideUrlLoading将在同一窗口中打开链接.
现在让我们看看第二种情况,其中网页请求在新窗口中打开网址.对于这种情况,我们需要告诉我们的webview支持多个窗口,如下所示:
webView.getSettings().setSupportMultipleWindows(true);
Run Code Online (Sandbox Code Playgroud)
然后在webview中添加新的Web chrome客户端以在网页请求新窗口时获取事件
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
WebView newWebView = new WebView(WebpageActivity.this);
newWebView.getSettings().setJavaScriptEnabled(true);
newWebView.getSettings().setSupportZoom(true);
newWebView.getSettings().setBuiltInZoomControls(true);
newWebView.getSettings().setPluginState(PluginState.ON);
newWebView.getSettings().setSupportMultipleWindows(true);
view.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
return true;
}
}
});
Run Code Online (Sandbox Code Playgroud)
干杯!!!
| 归档时间: |
|
| 查看次数: |
21822 次 |
| 最近记录: |