Reputation: 181
I have 2 ViewPagers in an Activity, I want them to move in sync when i swipe anyone of them.
For e.g. 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 i.e 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.
Upvotes: 0
Views: 935
Reputation: 9732
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) {
}
});
Upvotes: 1
Reputation: 5639
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) {
}
});
Upvotes: 1