在新的android viewpager2组件中是否可以启用-禁用刷卡?
viewpager2
yruzcnhs1#
现在可以使用Version 1.0.0-alpha02启用/禁用滑动viewpager2使用**implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha02'**
Version 1.0.0-alpha02
implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha02'
版本1.0.0新功能
setUserInputEnabled
isUserInputEnabled
ViewPager2
FragmentStateAdapter
myViewPager2.setUserInputEnabled(false);
在viewpager 2中启用滑动功能的示例代码
myViewPager2.setUserInputEnabled(true);
ffx8fchx2#
如果您正在使用Android数据绑定,您可以简单地禁用它的布局xml文件.
app:userInputEnabled="@{false}"
uyto3xhc3#
viewPager2.setUserInputEnabled(false);
vbkedwbf4#
在引擎盖下ViewPager2与RecyclerView一起工作来膨胀碎片视图,但是RecyclerView是隐藏的,所以他们使它更白痴的证明。
RecyclerView
val rv : RecyclerView = viewPager.getChildAt(0) as RecyclerView rv.layoutManager = NonScrollingLayoutManager( rv.context, rv.layoutManager as LinearLayoutManager)
一个很有技巧的方法是获取位置为0的子元素,即RecyclerView,并通过 Package 布局管理器来禁用布局管理器中的滚动:
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 }
请注意,如果API更改了用于RecyclerView的布局管理器,即它们远离LinearLayoutManager,这将不起作用,它将需要覆盖一些方法,并确保调用超级方法。第二种方法是将ViewPager2子类化,即ViewGroup,然后在将触摸事件调度到子视图(您可能会猜到RecyclerView)之前,神奇地拦截触摸事件,注意不要阻止点击。
LinearLayoutManager
ViewGroup
vhmi4jdf5#
是的,有可能。mViewPager2.setUserInputEnabled(false);//禁用滑动mViewPager2.setUserInputEnabled(true);//启用滑动我们可以基于选项卡禁用和启用,如以下代码所示
mViewPager2.setUserInputEnabled(false);
mViewPager2.setUserInputEnabled(true);
ViewPager2 mViewPager2 = findViewById(R.id.view_pager); mViewPager2.setOffscreenPageLimit(adapter.getItemCount() - 1); mViewPager2.setAdapter(adapter); TabLayout tabLayout = findViewById(R.id.sliding_tabs); tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { //do stuff here if(tab.getPosition() == 0){ **//ToDisable** mViewPager2.setUserInputEnabled(false); }else{ **//ToEnable** mViewPager2.setUserInputEnabled(true); } } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } });
5条答案
按热度按时间yruzcnhs1#
现在可以使用
Version 1.0.0-alpha02
启用/禁用滑动viewpager2
使用**
implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha02'
**版本1.0.0
新功能
setUserInputEnabled
、isUserInputEnabled
)API变更
ViewPager2
类期末考试错误修复
FragmentStateAdapter
稳定性修复在viewpager 2中禁用滑动的示例代码
在viewpager 2中启用滑动功能的示例代码
ffx8fchx2#
如果您正在使用Android数据绑定,您可以简单地禁用它的布局xml文件.
uyto3xhc3#
vbkedwbf4#
在引擎盖下
ViewPager2
与RecyclerView
一起工作来膨胀碎片视图,但是RecyclerView
是隐藏的,所以他们使它更白痴的证明。一个很有技巧的方法是获取位置为0的子元素,即
RecyclerView
,并通过 Package 布局管理器来禁用布局管理器中的滚动:请注意,如果API更改了用于RecyclerView的布局管理器,即它们远离
LinearLayoutManager
,这将不起作用,它将需要覆盖一些方法,并确保调用超级方法。第二种方法是将
ViewPager2
子类化,即ViewGroup
,然后在将触摸事件调度到子视图(您可能会猜到RecyclerView
)之前,神奇地拦截触摸事件,注意不要阻止点击。vhmi4jdf5#
是的,有可能。
mViewPager2.setUserInputEnabled(false);
//禁用滑动mViewPager2.setUserInputEnabled(true);
//启用滑动我们可以基于选项卡禁用和启用,如以下代码所示