点击事件-click,longclick

今天在修改一个问题的时候,遇到了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并不会执行。感觉应该是焦点传递造成的。

原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_click_1569182.html