import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ScrollView;
/**
* 解决ScrollView嵌套ViewPager出现的滑动冲突问题
*/
public class CustomScrollViewForViewPager extends ScrollView {
private GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
/**
* 是否可滑
*/
private boolean canScroll;
public CustomScrollViewForViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(new YScrollDetector());
canScroll = true;//初始默认可滑
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_UP)
canScroll = true;
return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
}
class YScrollDetector extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
/**
* 当竖向滑动距离大于横向滑动距离时可滑动
* 当横向滑动距离大于竖向滑动距离时不可滑动
*/
if(canScroll)
if (Math.abs(distanceY) >= Math.abs(distanceX))
canScroll = true;
else
canScroll = false;
return canScroll;
}
}
}
解决ScrollView嵌套ViewPager出现的滑动冲突问题
最新推荐文章于 2024-05-17 01:10:08 发布
本文介绍了一种解决ScrollView嵌套ViewPager时出现滑动冲突的方法。通过自定义CustomScrollViewForViewPager类,并使用GestureDetector监听触摸事件,确保了在竖向滑动时允许ScrollView滑动,而在横向滑动时阻止其滑动,从而避免了滑动冲突。
摘要由CSDN通过智能技术生成