Kotlin - 如何在ViewPager中添加OnPageChangeListener

Rah*_*hul 26 android android-viewpager kotlin

我在科特林是新的,我如何添加OnPageChangeListener一个ViewPager.

viewPager?.addOnPageChangeListener // Now how can I add listener to it.
Run Code Online (Sandbox Code Playgroud)

Rah*_*hul 76

我发现它很简单,但我花了很多时间,因为我是kotlin的新手.我希望有一天能节省其他人的时间.

viewPager?.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {

            override fun onPageScrollStateChanged(state: Int) {
            }

            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {

            }
            override fun onPageSelected(position: Int) {

            }

        })
Run Code Online (Sandbox Code Playgroud)

或者我们可以ViewPager.OnPageChangeListener在我们实现Activity或者Fragment只是使用viewPager?.addOnPageChangeListener(this)但确保实现覆盖方法.

  • *1小费*:当你不知道怎么做的时候?将光标保持在此处,然后按"CTRL + SHIFT + SPACE". (14认同)
  • 或者,您可以在Java文件中以Java方式编写它,并将代码复制粘贴到Kotlin文件中.它自动将Java代码转换为Kotlin. (2认同)

Vis*_*ese 7

对于ViewPager2,您可以使用OnPageChangeCallBack

viewPager2?.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
        override fun onPageSelected(position: Int) {
            super.onPageSelected(position)
        }

        override fun onPageScrollStateChanged(state: Int) {
            super.onPageScrollStateChanged(state)
        }

        override fun onPageScrolled(position: Int,
                                    positionOffset: Float,
                                    positionOffsetPixels: Int) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels)
        }
    })
Run Code Online (Sandbox Code Playgroud)


Vas*_*nov 6

由于大多数时候我们只需要覆盖三个ViewPager.OnPageChangeListener方法之一(通常是onPageSelected),这可能有助于减少代码:

viewPager?.addOnPageChangeListener(object : ViewPager.SimpleOnPageChangeListener() {

    //override only methods you need, not all of them

    override fun onPageSelected(position: Int) {

    }
})
Run Code Online (Sandbox Code Playgroud)