在Kotlin中禁用ViewPager刷卡Viewpager

时间:2017-11-15 10:34:42

标签: android android-viewpager kotlin

我是Kotlin的新手,我在片段中有View Page,我已在其上设置了寻呼机适配器。一切都工作正常,但当我试图停止我的视图寻呼机分页刷卡特林,并在Kotlin找不到任何方法这样做。 我试图在堆栈上找到解决方案,但没有运气。虽然在Java中有很多但Kotlin没有。

我使用Java作为

完成了这项工作
viewPager.setPagingEnabled(false);

但每当我在Kotlin尝试这个时,我最终会出错。 任何帮助都会得到赞赏。

1 个答案:

答案 0 :(得分:5)

我基于从Java转换以下答案创建了Kotlin版本:https://stackoverflow.com/a/13437997/8023278

没有内置的方法来禁用ViewPager页面之间的滑动,需要的是ViewPager的扩展,它覆盖了onTouchEvent和onInterceptTouchEvent以防止滑动动作。为了使它更加通用,我们可以添加一个setSwipePagingEnabled方法来启用/禁用页面之间的滑动。

class SwipeLockableViewPager(context: Context, attrs: AttributeSet): ViewPager(context, attrs) {
    private var swipeEnabled = false

    override fun onTouchEvent(event: MotionEvent): Boolean {
        return when (swipeEnabled) {
            true -> super.onTouchEvent(event)
            false -> false
        }
    }

    override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
        return when (swipeEnabled) {
            true -> super.onInterceptTouchEvent(event)
            false -> false
        }
    }

    fun setSwipePagingEnabled(swipeEnabled: Boolean) {
        this.swipeEnabled = swipeEnabled
    }
}

然后在布局xml中,使用新的SwipeLockableViewPager而不是标准ViewPager

<mypackage.SwipeLockableViewPager 
        android:id="@+id/myViewPager" 
        android:layout_height="match_parent" 
        android:layout_width="match_parent" />

现在,在我们的活动/片段中,我们可以呼叫myViewPager.setSwipePagingEnabled(false),而用户将无法在页面之间滑动