Android 在Kotlin中禁用查看寻呼机滑动查看寻呼机

Android 在Kotlin中禁用查看寻呼机滑动查看寻呼机,android,android-viewpager,kotlin,Android,Android Viewpager,Kotlin,我是Kotlin的新手,我在fragment中查看了寻呼机,并在其上设置了寻呼机适配器。一切正常,但当我试图在Kotlin中停止查看寻呼机分页滑动时,却找不到在Kotlin中执行此操作的任何方法。 我试图在堆栈上找到解决方案,但没有成功。虽然java中有很多,但Kotlin没有 我已经使用Java作为工具完成了这项工作 viewPager.setPagingEnabled(false); 但每当我在科特林尝试这一点,我最终都会出错。 任何帮助都将不胜感激。我基于从Java转换此答案创建了Kot

我是Kotlin的新手,我在fragment中查看了寻呼机,并在其上设置了寻呼机适配器。一切正常,但当我试图在Kotlin中停止查看寻呼机分页滑动时,却找不到在Kotlin中执行此操作的任何方法。 我试图在堆栈上找到解决方案,但没有成功。虽然java中有很多,但Kotlin没有

我已经使用Java作为工具完成了这项工作

viewPager.setPagingEnabled(false);
但每当我在科特林尝试这一点,我最终都会出错。
任何帮助都将不胜感激。

我基于从Java转换此答案创建了Kotlin版本:

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

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.setswippaginabled(false)
,用户将无法在页面之间滑动


更新


到2020年,我们现在有了。如果你想查看页面2,有一个内置的方法来禁用滑动:
myViewPager2.isUserInputEnabled=false

你需要为此创建自定义的查看页面你的意思是我不能使用android.support.v4.view.ViewPager吗?可能是重复的,为什么你不能将别人已经评论过的链接中的代码转换成kotlinyourself@Prem谢谢我只需要创建自定义视图寻呼机。。与java中相同。。谢谢