如何以编程方式在ViewPager中显示下一个视图?

Vai*_*hra 103 android android-viewpager

我创建了一个ViewPager,一切都运行正常,但是我希望在ViewPager之外有一个前一个下一个按钮,可用于在ViewPager中导航.如何在不手动滑动的情况下转到ViewPager上的下一个项目?

Vai*_*hra 151

正如blessenm所回答viewpager.setCurrentItem(int index)的那样.

  • 不幸的是,当用户手动滑动以及使用setCurrentItem跳转时,我会得到不同的行为.呼叫顺序相反.当我滑动时,它首先调用OnPageChangeListener#onPageSelected,然后它调用片段中的setUserVisibleHint.如果我使用setCurrentItem,它首先调用片段中的setUserVisibleHint然后调用OnPageChangeListener#onPageSelected,这在我的情况下确实是个问题:/所以我希望找到一种方法来保持自然行为但仍然以编程方式移动到另一个页面. (4认同)

And*_*son 102

一个完整的实现只是为了完整性:

public void MoveNext(View view) {
    //it doesn't matter if you're already in the last item
    pager.setCurrentItem(pager.getCurrentItem() + 1);
}

public void MovePrevious(View view) {
    //it doesn't matter if you're already in the first item
    pager.setCurrentItem(pager.getCurrentItem() - 1);
}
Run Code Online (Sandbox Code Playgroud)

  • @Sagar他可能在xml中设置了按钮的单击侦听器,在这种情况下,即使您不需要,也必须具有view参数. (2认同)

Pit*_*tel 14

最简单的方法是:

nextButton.setOnClickListener { pager.arrowScroll(View.FOCUS_RIGHT) }
prevButton.setOnClickListener { pager.arrowScroll(View.FOCUS_LEFT) }
Run Code Online (Sandbox Code Playgroud)

  • 唯一为我工作的人-Kotlin (2认同)