我正在显示一个仅包含ImageViews的ViewPager。但是,我需要它以循环的方式持续发生。对于Ex:...c >B>A>B> c...
发布于 2012-11-07 13:43:16
只需实现ViePager.OnPageChangeListener:
YOUR_VIEWPAGER.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
currentPage = position;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// not needed
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
int pageCount = pages.size();
if (currentPage == 0){
YOUR_VIEWPAGER.setCurrentItem(pageCount-2,false);
} else if (currentPage == pageCount-1){
YOUR_VIEWPAGER.setCurrentItem(1,false);
}
}
}
});
发布于 2020-02-12 13:25:18
试试这个吧。它将得到类似C <--> A <--> B <--> C <--> A的结果
viewPager?.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
var currentPage : Int = 0
var mPreviousPosition : Int = 0
var mIsEndOfCycle = false
override fun onPageScrollStateChanged(state: Int) {
val pageCount = viewPager?.adapter?.count
if (state == ViewPager.SCROLL_STATE_IDLE) {
if (mPreviousPosition == currentPage && !mIsEndOfCycle) {
if (currentPage == 0) {
pageCount?.minus(1)?.let { viewPager?.setCurrentItem(it, false) };
} else {
viewPager?.setCurrentItem(0, false);
}
mIsEndOfCycle = true;
} else {
mIsEndOfCycle = false;
}
mPreviousPosition = currentPage;
}
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
override fun onPageSelected(position: Int) {
currentPage = position
}
})
发布于 2021-01-08 21:59:06
下面的代码为我做到了这一点。我不想让用户从第一页滚动到最后一页。基本上我有三个不同的屏幕,但实际上在适配器中有四个,就像这样: A -> B -> C -> A。当用户点击第二个'A‘页面时,寻呼机状态变为空闲,我无缝地切换到第一个'A’页面。我甚至有一个页面指示器,我已经类似地覆盖了它。
val pageChangeCallback = object : ViewPager2.OnPageChangeCallback() {
override fun onPageScrollStateChanged(state: Int) {
super.onPageScrollStateChanged(state)
if (state == ViewPager.SCROLL_STATE_IDLE) {
if (viewPager.currentItem == NUM_PAGES - 1) {
viewPager.setCurrentItem(0, false)
}
}
}
}
https://stackoverflow.com/questions/13263549
复制相似问题