热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

androidwebview子网页

最近做个项目,应用里面要嵌入网页,而网页中又用到JS的”open_windows_and_get_selectedinfo“,需要打开一个子网页并获取数据。查阅了各种资料终于找到解

最近做个项目,应用里面要嵌入网页,而网页中又用到JS的”open_windows_and_get_selectedinfo“,需要打开一个子网页并获取数据。

查阅了各种资料终于找到解决方案:

wv_edit.setWebChromeClient(new WebChromeClient() {
WebView childView = null;
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {

// wv_edit.removeAllViews();
is_child = true;
childView = new WebView(MVMEdit.this);
childView.setTag("child");//方便查找并销毁页面
childView.getSettings().setJavascriptEnabled(true);
childView.setWebChromeClient(this);
childView.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
// wv_edit.addView(childView);
ll.addView(childView);
wv_edit.setVisibility(View.GONE);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(childView);
resultMsg.sendToTarget();
return true;
}
@Override
public void onCloseWindow(WebView window) {
is_child = false;
// wv_edit.removeView(childView);
wv_edit.setVisibility(View.VISIBLE);
ll.removeView(childView);
childView.destroy();
childView = null;
super.onCloseWindow(window);
}
});

其中wv_edit是主网页。最早是将子网页add到wv_edit中的。后来使用时发现生成的子网页是以wv_edit为参照。如果wv_edit是可滚动的,则滚动后不能保证子网页生成在屏幕中央。于是博主将子网页add到wv_edit的父容器中,与wv_edit同级。ll是LinearLayout。但是这样add进以后发现看不到子网页。最后将wv_edit隐藏后发现子网页藏在它后面。

这样解决方案就出来了。重写onCreateWindow,在其中新建子网页并隐藏主网页。在onCloseWindow中将子网页移除销毁并显示主网页。


推荐阅读
author-avatar
wang-zhiwen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有