2

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

 @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;
                    }
                }
4

2 回答 2

7

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

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

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

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

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

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

于 2016-07-15T10:54:49.113 回答
2

尝试view.setEnabled(false);停止WebView上的用户交互。因为我确信 view.setClickable(true);不会为你正常工作。

于 2013-10-07T12:27:21.910 回答