我是Kotlin的新手,我在片段中有View Page,我已在其上设置了寻呼机适配器。一切都工作正常,但当我试图停止我的视图寻呼机分页刷卡特林,并在Kotlin找不到任何方法这样做。 我试图在堆栈上找到解决方案,但没有运气。虽然在Java中有很多但Kotlin没有。
我使用Java作为
完成了这项工作viewPager.setPagingEnabled(false);
但每当我在Kotlin尝试这个时,我最终会出错。 任何帮助都会得到赞赏。
答案 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)
,而用户将无法在页面之间滑动