我有自己的切换按钮:
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_MOVE) {
if (event.getY() >= getHeight()) {
if(isChecked()) {
this.setChecked(true);
this.performClick();
}
} else if (event.getY() <= 0) {
if(!isChecked()) {
this.setChecked(false);
this.performClick();
}
}
}
return true;
}
我想检测用户是否将手指放在我的togglebutton上并进行更改。但是如果用户在控件外面按下手指,我就无法检测onTouchEvent。 有什么解决方案?
答案 0 :(得分:0)
您可以为自己的观点注册OnTouchListener
:
mOnTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
final int action = motionEvent.getAction();
boolean ret = false;
switch (action) {
case MotionEvent.ACTION_DOWN:
ret = ...;
break;
case MotionEvent.ACTION_MOVE:
ret = ...;
break;
case MotionEvent.ACTION_UP:
ret = ...;
break;
}
return ret;
}
};
onTouch(View view, MotionEvent motionEvent)
方法返回的内容定义了任何其他OnTouchListener()必须审核此事件或否。您可以看到this question。
修改强>:
创建two
OnTouchListener()类并注册每个类以观察它的运动事件。(一个用于button
,一个用于它parent
)。在{{1}中返回true
类女巫的方法审核你的按钮动作事件,所以只有这个类审核按钮的动作事件而不是父母听众。