今天在修改一个问题的时候,遇到了click,longclick事件触发情况。记录下来。

代码

        tView.setOnLongClickListener(new OnLongClickListener() {
            
            @Override
            public boolean onLongClick(View arg0) {
                // TODO Auto-generated method stub
                Log.e("123", "longclick");
                return true;
            }
        });
        tView.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Log.e("123", "click");
                
            }
        });

打印的log如下

01-01 13:09:01.324: E/123(8936): longclick

当我们把longclick返回值修改为false的时候,结果如下

  1 01-01 13:10:51.749: E/123(9284): longclick
  2 01-01 13:10:52.355: E/123(9284): click

我们可以得到如下结论

longclick事件能不能触发click时间,主要是看longclick的返回值

1.return false-继续执行click事件

2.return true -不再执行click事件

当然,这个问题还不是绝对的,还有其他情况发生。如下代码

       tView.setOnLongClickListener(new OnLongClickListener() {
            
            @Override
            public boolean onLongClick(View arg0) {
                // TODO Auto-generated method stub
                Log.e("123", "longclick");
                //Toast.makeText(MainActivity.this, "hehehe", Toast.LENGTH_LONG).show();
                Dialog dialog = new Dialog(MainActivity.this);
                dialog.setTitle("hehe");
                dialog.setOnCancelListener(new OnCancelListener() {
                    
                    @Override
                    public void onCancel(DialogInterface arg0) {
                        // TODO Auto-generated method stub
                        
                    }
                });
                dialog.show();
                return false;
            }
        });
        tView.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Log.e("123", "click");
                
            }
        });

这时候你会发现,弹出来dialog以后,click并不会执行。感觉应该是焦点传递造成的。

相关文章:

  • 2021-08-27
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2021-06-06
  • 2021-08-05
  • 2021-12-05
猜你喜欢
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
  • 2022-12-23
  • 2021-08-26
  • 2022-12-23
相关资源
相似解决方案