gpt4 book ai didi

java - 在某个 View 上滑动时禁用 ViewPager 滑动

转载 作者:行者123 更新时间:2023-12-02 04:34:48 24 4
gpt4 key购买 nike

我想保留 ViewPager 的滑动功能,但是我想在布局文件(自定义 )中的某个 View 上滑动时禁用它我正在扩展的偏好):

activity.xml

<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.viewpager.widget.ViewPager>

activity.kt

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
viewpager.addOnPageChangeListener(this)
// Initialise FragmentAdapter
val fragmentAdapter = ScreenSlidePagerAdapter(supportFragmentManager)
viewpager.adapter = fragmentAdapter
viewpager.currentItem = 1
}


private inner class ScreenSlidePagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm){
override fun getItem(position: Int): Fragment {
return when(position){
0 -> {
SettingsFragment()
}
2 -> {
UserFragment()
}
else -> {
MainFragment()
}
}
}
// 3 Fragments
override fun getCount(): Int {
return 3
}

}

我怎样才能实现这个目标?

最佳答案

您可以使用此代码来实现您的目标。

class LockableViewPager : ViewPager {
private var swipeable: Boolean = false

constructor(context: Context) : super(context) {}

constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
this.swipeable = true
}

override fun onTouchEvent(event: MotionEvent): Boolean {
return if (this.swipeable) {
super.onTouchEvent(event)
} else false
}

override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
return if (this.swipeable) {
super.onInterceptTouchEvent(event)
} else false
}

fun setSwipeable(swipeable: Boolean) {
this.swipeable = swipeable
}
}

然后你只需要调用

setSwipeable(false)

希望这有帮助。谢谢您

关于java - 在某个 View 上滑动时禁用 ViewPager 滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56556312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com