I have 2 ViewPagers in an Activity, I want them to move in sync when i swipe anyone of them.
For eg On Swiping Viewpager1 On Right Direction Viewpager 2 show also move in Right Direction.
Below is my code for On Touch Event:
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;
}
});
Now the code is working only incase of Viewpager1 ie On Swiping Viewpager1 ViewPager2 is also moving in same direction but when i swipe Viewpager2 Viewpager 1 doesn't move.
Need help. Thanks in advance.
Use 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) {
}
});
You need to use addOnPageChangeListener
of ViewPager
to handle event when user swipe on ViewPager
addOnPageChangeListener(ViewPager.OnPageChangeListener listener)
Add a listener that will be invoked whenever the page changes or is incrementally scrolled.
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(...)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.