【问题标题】:Can't swipe on ViewPager2 only on one direction无法仅在一个方向上滑动 ViewPager2
【发布时间】:2019-12-03 18:24:32
【问题描述】:

我尝试仅在一个方向(向右)启用 ViewPager2 中的滑动。我有 5 页。

我在我的活动中尝试这个:

viewPager2.registerOnPageChangeCallback(object :
            ViewPager2.OnPageChangeCallback() {

            override fun onPageSelected(position: Int) {
                super.onPageSelected(position)
                if (currentPage == position) {
                    dataBinding.viewPager2.setUserInputEnabled(false)
                }
                if (currentPage < position) { // swipe left
                    dataBinding.viewPager2.setUserInputEnabled(true)
                } else if (currentPage > position) { // swipe right
                    dataBinding.viewPager2.setUserInputEnabled(false)
                }
                currentPage = position; 
            }
        })

但这无济于事。它禁用了两个方向。

【问题讨论】:

  • 您找到合适的解决方案了吗?

标签: android android-viewpager2


【解决方案1】:

试试这个方法

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager2.widget.ViewPager2
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    var previousPage: Int = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        viewpager.adapter = MyAdapter(this)
        viewpager.orientation = ViewPager2.ORIENTATION_HORIZONTAL

        // try this to disable swiping in previous page
        viewpager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageScrolled(
                position: Int,
                positionOffset: Float,
                positionOffsetPixels: Int
            ) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels)
                if (position < previousPage) {
                    viewpager.setCurrentItem(previousPage, true)
                } else {
                    previousPage = position
                }
            }
        })
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多