【问题标题】:I can't find PageChangeListener in ViewPager2.?我在 ViewPager2 中找不到 PageChangeListener。?
【发布时间】:2020-01-22 06:28:36
【问题描述】:

ViewPager2 PageChangeListener 不像普通的 ViewPager 那样工作?

【问题讨论】:

  • ViewPager2 提供OnPageChangeCallback
  • 这工作谢谢

标签: android android-studio android-viewpager android-viewpager2


【解决方案1】:

registerOnPageChangeCallback 方法:

pager.registerOnPageChangeCallback(object: ViewPager2.OnPageChangeCallback() {
            override fun onPageScrolled(
                position: Int,
                positionOffset: Float,
                positionOffsetPixels: Int
            ) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels)
            }

            override fun onPageSelected(position: Int) {
                super.onPageSelected(position)
            }

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

【讨论】:

  • 我这边只需 5 美分:别忘了注销监听器
【解决方案2】:

下面是 ViewPager2 中 OnPageChangeListener 的示例代码。

class ViewPager2PageChangeCallback(private val listener: (Int) -> Unit) : ViewPager2.OnPageChangeCallback() {
    override fun onPageSelected(position: Int) {
            super.onPageSelected(position)
            when (position) {
               //YOUR CODE
            }
        }
    }

【讨论】:

    【解决方案3】:

    在 Java 中可以这样编码:

    mViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageScrolled(int position,
                float positionOffset, int positionOffsetPixels) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels);
    
            setProgress((position + positionOffset) / (mPageCount - 1));
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      相关资源
      最近更新 更多