我有一个带有
onTouchListener
的checkbox
,在这个监听器中,我有一个switch语句,包括以下几种情况:
MotionEvent.ACTION_DOWN
MotionEvent.ACTION_UP
MotionEvent.ACTION_CANCEL
ACTION_UP
情况下没有使用view.performClick()
,会收到Lint警告:
但这也导致我的方法无法正常工作:当检测到点击时, onTouch 应该调用 View#performClick
public void touchCheckBox(View view) {
CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox);
checkBox.performClick();
}
如果我在ACTION_DOWN中添加view.performClick()
,那么我的方法就可以正常工作。
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;
}
在 ACTION_UP
情况下,是否需要使用 view.performClick()
方法,或者可以忽略 Lint 警告?