【问题标题】:How to disable long click on WebView in android如何在android中禁用长按WebView
【发布时间】:2013-04-02 12:37:19
【问题描述】:

我想禁用对 webView 的长按,所以我无法选择其中的文本,我使用了三种方法来做到这一点,但没有任何效果:

1) android:longClickable="false"

2) webView.setLongClickable(false);

3) webView.setOnLongClickListener(new OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                return true;
            }
        });

所以请帮忙。

【问题讨论】:

    标签: android webview android-webview


    【解决方案1】:

    要禁用长按,您需要先启用长按setLongClickable(true);,然后再启用setOnLongClickListener,然后什么都不返回:

    webview.setLongClickable(true);
    webview.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            return true;
            }
        });
    

    如果您只需要禁用文本选择,最好将以下 CSS 添加到您的网页中,它将禁用文本选择:

    body {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        -khtml-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }
    

    查看 Mozilla 文档here

    【讨论】:

      【解决方案2】:

      这对我有用,如 https://stackoverflow.com/a/12793740/5035343 所示

      mWebView.setOnLongClickListener(new OnLongClickListener() {
      @Override
      public boolean onLongClick(View v) {
          return true;
      }
      });
      mWebView.setLongClickable(false);
      

      而要消除长按引起的震动,你可以试试这个。

      mWebView.setHapticFeedbackEnabled(false);
      

      【讨论】:

        【解决方案3】:

        试试这个:

           public void SelectText(View v) {
                try {
                    KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
                            KeyEvent.KEYCODE_ESCAPE, 0, 0);
                    shiftPressEvent.dispatch(v);
                } catch (Exception e) {
                    throw new AssertionError(e);
                }
            }
        

        或:

        public boolean onTouchEvent(MotionEvent "ACTION_DOWN") {
            try {
                KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
                        KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
                shiftPressEvent.dispatch(webview);
            } catch (Exception e) {
                throw new AssertionError(e);
            }
            return false;
        }
        

        【讨论】:

          【解决方案4】:

          试试这个:

          webView.setOnLongClickListener(null);
          

          【讨论】:

            【解决方案5】:

            这个方法对我有用,看看对大家有没有帮助。

            1) 就用这个webView.setLongClickable(false);

            2) 在带有 css 的 html 中使用:

            body {
                -webkit-touch-callout: none;
                -webkit-user-select: none;
                -khtml-user-select: none;
                -moz-user-select: none;
                -ms-user-select: none;
                user-select: none;
            }
            

            3) 在html中用这个替换body标签<body oncontextmenu="return false;">

            【讨论】:

              【解决方案6】:

              在 kotlin 中使用它

              binding.webViewId.setOnLongClickListener(OnLongClickListener { true })
              

              webViewId.setOnLongClickListener(OnLongClickListener { true })
              

              【讨论】:

                猜你喜欢
                • 2013-04-30
                • 2021-05-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-01-13
                • 2019-04-01
                相关资源
                最近更新 更多