如何忽略覆盖视图并检测onFling(onSwipe)?
我有一个很多孩子的看法。我需要的是在Swipe或Fling动作上实施反应。问题在于,如果我删除所有孩子,它才会真正起作用,否则,主布局顶部的子视图会尝试滑动。如何忽略覆盖视图并检测onFling(onSwipe)?
我都尝试加入onSwipeListener到主布局并添加GestureListener整个活动用同样的成功。
我现在的(非工作)解决方案是这样的:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_schedule);
main_layout = findViewById(R.id.schedule_main_view);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade);
main_layout.startAnimation(fadeInAnimation);
GestureDetector.SimpleOnGestureListener simpleOnGestureListener =
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDown(MotionEvent event) {
return true;
}
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d(null,"Fling");
int dx = (int) (event2.getX() - event1.getX());
// don't accept the fling if it's too short
// as it may conflict with a button push
if (Math.abs(dx) > 20
&& Math.abs(velocityX) > Math.abs(velocityY)) {
if (velocityX > 0) {
Log.d(DEBUG_TAG, "onFling: " + event1.toString() + event2.toString());
Log.d(DEBUG_TAG, "onFling To Right");
} else {
Log.d(DEBUG_TAG, "onFling: " + event1.toString() + event2.toString());
Log.d(DEBUG_TAG, "onFling To Left");
}
return true;
} else {
return false;
}
}
};
shift = getIntent().getIntExtra(WEEK_SHIFT, CURRENT_WEEK);
mDetector = new GestureDetectorCompat(this,simpleOnGestureListener);
unDimScreen();
setupWeek();
}
重复:如果该活动是在该州时,有在顶部没有子视图,它按预期工作。
所以,问题是:我能做些什么使活动获取手势忽略覆看法?
的问题是孩子的意见越来越触摸事件,而不是给它的父。 如果您不使用覆盖视图可点击事件,则可以关闭该视图的可点击属性,如view.setClickable(false);
...然后,所有点击事件将转到其父视图。如果没有工作,你可以在触摸监听器定义在这样每个覆观点:
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
});
UPD: 下面这个问题的另一个(右)的解决方案:https://developer.android.com/training/gestures/viewgroup.html#delegate
尝试设置android:clickable="true"
和android:descendantFocusability="blocksDescendants"
到您想要在xml文件中滑动的视图。这应该阻止儿童接收点击事件。
这不行,谢谢你 –
拦截触摸ViewGroup中的事件是我需要的。谢谢! –