标题是怎么说的。我有一个网络视图,它加载了一个带有一个问题的调查。在用户点击/点击页面上的答案之后;谢谢你"显示(似乎问题元素被隐藏,感谢详细信息变得可见(。"谢谢你";页面";大部分是空白的,用户无法退出视图(或页面(。我想在用户点击答案(或其他任何地方(后隐藏网络视图,它仍然应该在隐藏之前接受点击。我尝试过使用:
// Find view
val webView: WebView = findViewById(R.id.web_view)
// Enable JS
val webSettings: WebSettings = webView.getSettings()
webSettings.javaScriptEnabled = true
// Load the page and set a listener to hide after a click.
webView.loadUrl(targetingResult.getSurveyUrl())
webView.setOnClickListener {
it.visibility = View.INVISIBLE
}
但它不起作用。我认为它仍然接受页面上的点击,而不是视图/网络视图本身。需要考虑的一些事项:
- 视图占据了整个活动/屏幕空间。我无法在某个位置添加按钮来关闭视图
- 理想情况下,不使用后退按钮
- 如果你的答案使用JS,请假设我从未使用过JavaScript(保持简洁直接(
- 欢迎注释代码
TL;DR-在用户单击某个元素后隐藏网络视图。让页面在隐藏web视图的同时完成自己的任务。
有一个名为JavaScriptInterface的注释,
public class JavaScriptInterface {
Context mContext;
/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
fun hideWebView() {
webView.setOnClickListener {
it.visibility = View.INVISIBLE
}
}
}
并将其设置为WebView,如下所示
wv.addJavascriptInterface(JSInterface, "JSInterface");
然后你可以要求网络开发人员从他的角度调用这个函数,比如
function hidePage()
{
JSInterface.hideWebView();
}
这种方式:
webView.setOnClickListener {
webView.visibility = View.GONE
}
另一个想法是将该视图从其父视图中删除。
webView.setOnClickListener {
(webView.parent as ViewGroup).removeView(webView)
}