微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单击页面后是否可以隐藏android webview?

如何解决单击页面后是否可以隐藏android webview?

标题所说的。我有一个 webview,它加载了一个带有一个问题的调查。在用户点击/点击页面上的答案后,会出现一个“谢谢”(似乎问题元素被隐藏而谢谢详细信息变得可见)。 “谢谢”“页面”大部分是空白的,用户无法退出视图(或与此相关的页面)。我想在用户点击答案(或其他任何地方)后隐藏 webview,它仍然应该在隐藏之前接受点击。我试过使用:

// 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
}

但它不起作用。我认为它仍然接受页面上的点击,而不是视图/webview 本身。需要考虑的一些事项:

  • 视图占据了整个活动/屏幕空间。我无法在某处添加按钮来关闭视图。
  • 理想情况下,不使用后退按钮。
  • 如果您的回答使用 JS,请假设我从未使用过 JavaScript(保持简洁直接)。
  • 欢迎评论代码

TL;DR - 在用户单击元素后隐藏 web 视图。让页面在隐藏 webview 的同时完成它的工作。

解决方法

有个注解叫做 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"); 

然后你可以让web开发者像这样从他身边调用这个函数,

function hidePage()
{
    JSInterface.hideWebView();
}
,

这样:

webView.setOnClickListener {
    webView.visibility = View.GONE
}

另一个想法是从其父视图中删除该视图。

webView.setOnClickListener {
    (webView.parent as ViewGroup).removeView(webView)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。