[英]Multiple ViewPager Touch Event
我在一个 Activity 中有 2 个 ViewPager,我希望它们在我滑动其中任何一个时同步移动。
例如,在向右滑动 Viewpager1 时,Viewpager 2 显示也向右移动。
以下是我的 On Touch 事件代码:
viewPager2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
viewPager1.onTouchEvent(event);
return false;
}
});
viewPager1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
viewPager2.onTouchEvent(event);
return false;
}
});
现在代码仅在 Viewpager1 的情况下工作,即在滑动 Viewpager1 时,ViewPager2 也在同一方向移动,但是当我滑动 Viewpager2 时,Viewpager 1 不会移动。
需要帮忙。 提前致谢。
使用OnPageChangeListener
:
viewPager1.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
viewPager2.setCurrentItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewPager2.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
viewPager1.setCurrentItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
用户在ViewPager
滑动时,需要使用addOnPageChangeListener
的ViewPager
处理事件
addOnPageChangeListener(ViewPager.OnPageChangeListener侦听器)
添加一个侦听器,该侦听器将在页面更改或增量滚动时被调用。
viewPager1.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
viewPager2.setCurrentItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewPager2.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
viewPager1.setCurrentItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
添加自定义 onTouch 逻辑的正确方法是调用
viewPager2.getChildAt(viewPager2.getCurrentItem()).setOnTouchListener(...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.