如何使 WebView 可点击 False 和 True

Nik*_*ddy 2 android android-webview webviewclient

我在我的应用程序中使用 Web 视图,一切对我来说都很好,但我遇到了小问题。当 Url 包含免责声明时,我不应该允许 web 视图应该是可点击的。但在所有其他情况下,网络视图应该是可点击的。

 @Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    if(url.contains("Disclaimers")){
                        view.setClickable(false);

                        //Here clickable should be fasle.

                        return true;
                    }else{
                        // In this clickable should be true.
                        view.setClickable(true);

                        if(!url.contains("/Home.mvc/Trade")){
                            showProgressLayout();
                        }
              if(url.contains("/Home.mvc/Trade")){
                            openTradeScreen(url);
                        }else{
                            view.loadUrl(url); 
                        }                 
                        return true;
                    }
                }
Run Code Online (Sandbox Code Playgroud)

Att*_*osz 7

我知道这是一个老问题,但其他人也可能会发现这里的答案很有用。似乎比将可点击设置为 false 更好地解决问题。

为了懒惰,我将从这里的答案中复制解决方案(针对这种情况进行了编辑,假设view是 webview):)

view.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

原始答案也给出了以下解释:

禁用 WebView 上的所有触摸事件,因为触摸侦听器在 WebView 的默认触摸行为之前执行。通过返回 true 事件被消耗并且不会传播到 WebView。

使用 android:clickable="false" 不会禁用触摸事件。