日志从不记录 ACTION_UP 或 ACTION_MOVE (我从代码示例中删除以缩短)
这是我的代码的缩短版本:
public class ProfileBadgeView extends LinearLayout {
Activity act;
public ProfileBadgeView(Context context) {
super(context);
}
public ProfileBadgeView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ProfileBadgeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void initView(Activity act) {
//..init
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
logIntercept("ACTION DOWN");
} else if (ev.getAction() == MotionEvent.ACTION_UP) {
logIntercept("ACTION_UP");
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return true;
}
private void logIntercept(Object obj) {
Log.i(this.getClass().getSimpleName() + " INTERCEPT :", obj.toString());
}
}
最佳答案
您的 onInterceptTouchEvent
方法不会在 ACTION_DOWN
事件之后调用,因为您在 true
方法中返回了 onTouchEvent
。所以所有其他事件都在 onTouchEvent
中发送,而不是在 onInterceptTouchEvent
中发送:
http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)
关于android - onInterceptTouchEvent 的 ACTION_UP 和 ACTION_MOVE 永远不会被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21288081/