在新的Android viewpager2
组件中,是否有可能启用或禁用滑动呢?
现在,使用 Version 1.0.0-alpha02
,可以实现启用/禁用 viewpager2
的滑动功能。
请使用 implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha02'
。
新功能
setUserInputEnabled
, isUserInputEnabled
)API 更改
ViewPager2
类 final错误修复
FragmentStateAdapter
稳定性修复禁用 viewpager2 中滑动的示例代码
myViewPager2.setUserInputEnabled(false);
启用ViewPager2中的滑动示例代码
myViewPager2.setUserInputEnabled(true);
app:userInputEnabled="@{false}"
viewPager2.setUserInputEnabled(false);
viewPager2.isUserInputEnabled = false
就可以禁用用户输入。ViewPager2
与RecyclerView
一起工作来填充片段视图,但是RecyclerView
被隐藏了,以使其更加易于使用。 val rv : RecyclerView = viewPager.getChildAt(0) as RecyclerView
rv.layoutManager = NonScrollingLayoutManager( rv.context, rv.layoutManager as LinearLayoutManager)
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
}
pager.userInputEnabled = false
。 - RFM是的,这是可能的。
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) {
}
});
myViewPager2.setUserInputEnabled(false); // 在Java中 myViewPager2.isUserInputEnabled = false; // 在Kotlin中