获取ViewPager的当前位置

Ada*_*dam 82 android android-viewpager

我知道使用Gallery小部件我可以使用getSelectedItemPosition(); 检索当前位置,但看起来ViewPager似乎没有.

我知道我可以设置一个监听器并在切换页面时检索位置.但我想要当前的观点位置.

Ter*_*rry 186

您可以使用:

mViewPager.getCurrentItem()
Run Code Online (Sandbox Code Playgroud)

  • 是的,有:http://developer.android.com/reference/android/support/v4/view/ViewPager.html#getCurrentItem() (19认同)
  • 对不起我错了.刚刚更新了我的支持库,这个方法存在于新版本中 (3认同)
  • 这是他在2018年仍在工作的最佳答案 (3认同)

and*_*idu 92

创建一个监听器并在viewpager上设置它:

/**
 * Get the current view position from the ViewPager by
 * extending SimpleOnPageChangeListener class and adding your method
 */
public class DetailOnPageChangeListener extends ViewPager.SimpleOnPageChangeListener {

    private int currentPage;

    @Override
    public void onPageSelected(int position) {
        currentPage = position;
    }

    public final int getCurrentPage() {
        return currentPage;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.现在我完全理解听众是什么了! (4认同)
  • 在使用时请注意:当视图从未更改时,getCurrentPage()将始终返回0.出于某种原因,如果你在第一个视图以外的某个视图上输入ViewPager,那么你期望的值不应该是0 ...我只是遇到了一个问题因为我并不总是在第一个视图中输入视图. (3认同)

Hit*_*ahu 6

2019 年更新

现在您可以 addOnPageChangeListener在 View Pager 上设置观察页面位置的变化。

由于您想设置一个侦听器并在页面切换时检索位置

mViewPager.addOnPageChangeListener(object : OnPageChangeListener {
            override fun onPageScrollStateChanged(state: Int) {}
            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}

            override fun onPageSelected(position: Int) {
                pagePosition.setText("" + position + "/" + galleryAdapter!!.count)
            }
        })
Run Code Online (Sandbox Code Playgroud)