[英]Synchronizing two ViewPager2
Is there a way to synchronize two separate ViewPager2 views.有没有办法同步两个单独的 ViewPager2 视图。 Both pagers contain same number of elements.两个寻呼机都包含相同数量的元素。 I want both pagers to scroll synchronously ether by scrolling first or second ViewPager2.我希望两个寻呼机通过滚动第一个或第二个 ViewPager2 来同步滚动。
I have tried registering ViewPager2.OnPageChangeCallback
like next:我已经尝试注册ViewPager2.OnPageChangeCallback
如下:
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
but none of methods can really help (maybe onPageScrolled
but I don't know how to transfer that scrolling to second viewPager2).但没有一种方法能真正提供帮助(可能onPageScrolled
,但我不知道如何将滚动转移到第二个 viewPager2)。
You need to use ViewPager2.OnPageChangeCallback()
您需要使用ViewPager2.OnPageChangeCallback()
Check this repository for source code https://github.com/RathodNilesh14/Synchronization-of-two-ViewPager2检查此存储库以获取源代码https://github.com/RathodNilesh14/Synchronization-of-two-ViewPager2
SAMPLE CODE示例代码
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager2.widget.ViewPager2;
public class JavaActivity extends AppCompatActivity {
ViewPager2 myFirstViewPager, mySecondViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_java);
myFirstViewPager = findViewById(R.id.myFirstViewPager);
mySecondViewPager = findViewById(R.id.mySecondViewPager);
MyAdapter myAdapter = new MyAdapter(this);
myFirstViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
myFirstViewPager.setAdapter(myAdapter);
mySecondViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
mySecondViewPager.setAdapter(myAdapter);
myFirstViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
mySecondViewPager.setCurrentItem(position, false);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
mySecondViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
myFirstViewPager.setCurrentItem(position, false);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.