【问题标题】:Is it possible to hide an android webview after one single click on the page?单击页面后是否可以隐藏android webview?
【发布时间】:2021-07-01 09:04:01
【问题描述】:

标题所说的。我有一个 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。

【问题讨论】:

标签: android kotlin webview qualtrics


【解决方案1】:

有一个注解叫 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();
}

【讨论】:

    【解决方案2】:

    这边:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 2014-07-02
      • 2013-01-09
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      相关资源
      最近更新 更多