【问题标题】:onLongClickListener does not work on WebViewonLongClickListener 在 WebView 上不起作用
【发布时间】:2011-06-07 05:53:11
【问题描述】:

我有以下结构来实现 longclicklistener。如果我单击包含 html 链接的 web 视图上的文本,它会起作用,所以我知道结构并非完全错误。

我现在删除了这个链接,监听器不再监听点击。有人知道这个问题并有一些建议吗?

    private View.OnLongClickListener mLongClickHandler = new View.OnLongClickListener()   {
    @Override
    public boolean onLongClick(View view) {
        ...
        return true;
    }
};

...

mywebview.setOnLongClickListener(mLongClickHandler);

【问题讨论】:

  • 该事件可能在到达实际的 webview 之前被 webview 内容所消耗。
  • webview 只显示一些文本。并且在文本中使用 html-links 长按一下就可以了。
  • 我在 HTC Desire (Android 2.2.2) 上遇到了类似的问题:OnLongClickListenerniver 永远不会触发,除非点击发生在链接上。请注意,此问题在 Galaxy S2(适用于 Android 2.3.3)上永远不会发生。

标签: android webview onlongclicklistener


【解决方案1】:

我现在尝试自己克隆长按动作。这有效,但只有几次。一段时间后,onTouch-Event 不再被调用...建议?

private Runnable copyTextAfterDelay=new Runnable() {
    public void run() {
        ...
    }
};

...

        myWebView.setOnTouchListener(new View.OnTouchListener() { 
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) { 
                    case MotionEvent.ACTION_DOWN:  
                        mTimerHandler.removeCallbacks(copyTextAfterDelay);
                        mTimerHandler.postDelayed(copyTextAfterDelay,1000);
                        break;
                    case MotionEvent.ACTION_UP: 
                        mTimerHandler.removeCallbacks(copyTextAfterDelay);
                        break;
                    case MotionEvent.ACTION_MOVE:
                        mTimerHandler.removeCallbacks(copyTextAfterDelay);
                        break;
                }
                return false;                  
            }
            });

【讨论】:

    【解决方案2】:

    覆盖 webview 的 onTouch 方法并为 ACTION_DOWN 事件返回 true。 从而消耗掉你的事件。

      @Override
      public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) { 
             case MotionEvent.ACTION_DOWN:  
                return true;
          }
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2013-06-21
      相关资源
      最近更新 更多