[英]How to make a circular view pager2?
如何在 java 中制作圆形视图 pager2(无限滚动)? 例如,我想要 go 从第 1 页到第 100 页,同时向左滑动而不是停止。
myViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
Log.d(CPAct,"onPageScrolled "+position);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
Log.d(CPAct,"onPageSelected Position: "+position);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
Log.d(CPAct,"onPageScrollStateChanged state: "+state);
if (state == ViewPager2.SCROLL_STATE_IDLE) {
if (myViewPager2.getCurrentItem() == 0)
myViewPager2.setCurrentItem(99, false);
else if (myViewPager2.getCurrentItem() == 99)
myViewPager2.setCurrentItem(0, false);
}
我在设置适配器后在 initView() 中尝试了上面的代码,但它不能正常工作。 例如,当我从第 2 页向左滑动时,它直接转到最后一页并跳过第 1 页。当我向右滑动到最后一页并直接转到第 1 页时,也会发生同样的情况。我只是想做一个无限滚动而不跳过任何页面。
您应该发布Adapter
的代码,在那里您应该在getCount
中返回Integer.MAX_VALUE
并引入正确的 model 获取绘图列表项 - 例如,如果您有getItem
ArrayList data
,则使用data.get(position % data.getItemCount())
由于数组具有固定大小,但您正在通知适配器有关非常大/无限数量的项目)
您当前的方法不好,因为您正在操纵View
的位置,这对于舒尔来说迟早会增加一些视觉故障,而且效率也不是很高
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.