[英]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.