我有一个带有checkbox的onTouchListener,在这个侦听器中,我使用以下情况进行切换:
MotionEvent.ACTION_DOWNMotionEvent.ACTION_UPMotionEvent.ACTION_CANCEL当我在view.performClick()的情况下没有ACTION_UP时,我会收到一个警告:
当检测到单击时,onTouch应该调用View#performClick
但它导致我的方法行不通:
public void touchCheckBox(View view) {
CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox);
checkBox.performClick();
}如果我也将view.performClick()添加到ACTION_DOWN中,我的方法也能很好地工作。
我的touchCheckBox()代码是:
public boolean onTouch(View view, MotionEvent motionEvent) {
boolean isEventConsumed;
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
row.setBackgroundColor(mContext.getResources().getColor(R.color.blueSelection));
isEventConsumed = true;
break;
case MotionEvent.ACTION_UP:
view.performClick();
row.setBackgroundColor(mContext.getResources().getColor(R.color.white));
touchCheckBox(row);
isEventConsumed = true;
break;
case MotionEvent.ACTION_CANCEL:
row.setBackgroundColor(mContext.getResources().getColor(R.color.white));
isEventConsumed = true;
break;
default:
isEventConsumed = false;
break;
}
return isEventConsumed;
}});
view.performClick()在ACTION_UP的情况下是必要的,还是我可以抑制林特警告?
发布于 2015-11-17 09:52:02
https://code.google.com/p/android-developer-preview/issues/detail?id=1394
它被报道为窃听器,我认为你刚刚压制了警告。
嗯,试试这个:
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// stuffs
break;
case MotionEvent.ACTION_UP:
v.performClick();
break;
default:
break;
}
return true;
}https://stackoverflow.com/questions/33753244
复制相似问题