mur*_*glu 12 android androidx android-viewpager2
是否可以在新的android viewpager2组件中启用-禁用刷卡功能?
Nil*_*hod 20
现在可以启用-禁用刷卡viewpager2使用Version 1.0.0-alpha02
使用 implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha02'
新的功能
setUserInputEnabled,isUserInputEnabled)API变更
ViewPager2 班级决赛Bug修复
FragmentStateAdapter 稳定性修复样本代码以禁用在viewpager2中滑动
myViewPager2.setUserInputEnabled(false);
Run Code Online (Sandbox Code Playgroud)
样本代码以启用在viewpager2中滑动
myViewPager2.setUserInputEnabled(true);
Run Code Online (Sandbox Code Playgroud)
小智 17
如果您使用 Android 数据绑定,您只需在布局 xml 文件中禁用它即可。
app:userInputEnabled="@{false}"
Run Code Online (Sandbox Code Playgroud)
引擎盖下的ViewPager2作品有RecyclerView用于使该片段的意见,但RecyclerView被隐藏,使他们使它更白痴的证明。
val rv : RecyclerView = viewPager.getChildAt(0) as RecyclerView
rv.layoutManager = NonScrollingLayoutManager( rv.context, rv.layoutManager as LinearLayoutManager)
Run Code Online (Sandbox Code Playgroud)
hacky 方法是RecyclerView通过包装布局管理器,将孩子置于零位置,这是在布局管理器中禁用滚动:
inner class NonScrollingLayoutManager(context: Context, val layoutManager: LinearLayoutManager) :
LinearLayoutManager(context, layoutManager.orientation, layoutManager.reverseLayout) {
override fun canScrollVertically(): Boolean = layoutManager.orientation == HORIZONTAL
override fun canScrollHorizontally(): Boolean = layoutManager.orientation == VERTICAL
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果 API 更改了用于 RecyclerView 的布局管理器,即它们离开了LinearLayoutManager这将无法工作,它将需要覆盖一些方法并确保调用超级方法。
第二种方法是将ViewPager2which is 子类化ViewGroup,然后在将触摸事件分派到子视图(如您所猜测的那样RecyclerView)之前拦截触摸事件,并注意不要阻止点击。