Tôi đang cố gắng để đồng bộ hóa hai ViewPager
s, như dường như có khá nhiều người trước tôi, và tôi đã có như xa như thế này:Đồng bộ hóa hai ViewPagers sử dụng OnPageChangeListener
private ViewPager mNavPager;
private ViewPager mMainPager;
private final OnPageChangeListener mNavPagerListener = new OnPageChangeListener() {
private boolean mNavDragging;
private int mScrollPosition;
@Override
public void onPageSelected(int position) {
mScrollPosition = position;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(mNavDragging)
mMainPager.scrollTo(positionOffsetPixels, 0);
}
@Override
public void onPageScrollStateChanged(int state) {
switch(state) {
case ViewPager.SCROLL_STATE_DRAGGING:
case ViewPager.SCROLL_STATE_SETTLING:
mNavDragging = true;
break;
case ViewPager.SCROLL_STATE_IDLE:
mNavDragging = false;
break;
}
}
};
private OnPageChangeListener mMainPagerListener = new OnPageChangeListener() {
private boolean mMainDragging;
private int mScrollPosition;
@Override
public void onPageSelected(int position) {
mScrollPosition = position;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(mMainDragging)
mNavPager.scrollTo(positionOffsetPixels, 0);
}
@Override
public void onPageScrollStateChanged(int state) {
switch(state) {
case ViewPager.SCROLL_STATE_DRAGGING:
case ViewPager.SCROLL_STATE_SETTLING:
mMainDragging = true;
break;
case ViewPager.SCROLL_STATE_IDLE:
mMainDragging = false;
break;
}
}
};
Nếu một trong hai là được cuộn theo cách thủ công, mặt còn lại được gạch vào nó bằng thuộc tính trạng thái cuộn. Nó hoạt động đẹp cho đến khi các vật phẩm đạt đến vị trí cuối cùng của chúng; tại thời điểm này, máy nhắn tin được vuốt ngay lập tức quay lại mục đã chọn trước đó, như thể việc di chuyển đã không diễn ra.
Tôi đã thử gọi ViewPager#setCurrentItem(mScrolledPosition)
với một loạt các ràng buộc logic khác nhau nhưng điều đó không hoạt động, mặc dù đôi khi nó làm cho nó tồi tệ hơn. Tôi cảm thấy như thể phải có một cái gì đó có thể được thực hiện với điều đó nhưng tôi không chắc chắn những gì.
Làm cách nào để tôi có được máy nhắn tin được giữ ở đúng vị trí?
Bạn sẽ viết nó một cách chi tiết hơn? –