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