我有几个视图的 viewPager。viewPager 的默认行为是首先显示第一个项目,然后从右向左滑动将第二个视图显示到当前视图的右侧,依此类推。
我想要的行为是在显示第一个项目后,从左向右滑动将显示当前项目 左侧的下一个视图。
我搜索了很多聪明的方法来实现这个但没有结果..
提前谢谢。
我有几个视图的 viewPager。viewPager 的默认行为是首先显示第一个项目,然后从右向左滑动将第二个视图显示到当前视图的右侧,依此类推。
我想要的行为是在显示第一个项目后,从左向右滑动将显示当前项目 左侧的下一个视图。
我搜索了很多聪明的方法来实现这个但没有结果..
提前谢谢。
为什么不反转您在视图寻呼机中查看的列表并使用setCurrentItem(int)或setCurrentItem(int,boolean)并在活动/片段启动时设置最后一个..
当 ViewPager 附加到 View 时,您可以简单地使用setCurrentItem()
它导航到 ViewPager 中的最后一页。
我正在寻找一种方法来反转 viewpager2 并想出了这个。这是一个肮脏的黑客,但它有效
这个想法是水平镜像viewpager,然后将每个页面镜像回来
var ViewPager2.isReversedDirection: Boolean
get() = scaleX == -1f
set(value) {
if (value) {
scaleX = -1f // mirror viewpager
val listener = object : RecyclerView.OnChildAttachStateChangeListener {
override fun onChildViewDetachedFromWindow(view: View) = Unit
override fun onChildViewAttachedToWindow(view: View) {
view.scaleX = -1f // mirror the page back when it was attached
}
}
val recyclerView = getChildAt(0) as RecyclerView
recyclerView.addOnChildAttachStateChangeListener(listener)
}
}
由于依赖viewpager内部实现,所以在androidx.viewpager2:viewpager2:1.0.0上测试
您现在可以在 Recyclerview 中水平显示项目。
有一个选项可以将 recyclerview 项目显示为相反的顺序。
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, true)); // last parameter is isReverse
如果你想显示像 ViewPager 分页这样的 RecyclerView 项目,你应该使用这个库:
https://github.com/lsjwzh/RecyclerViewPager
此代码将 RecyclerView 显示为 Reverse Order ViewPager。
这是代码:
RecyclerViewPager recyclerViewPager = findViewById(R.id.recyclerViewPager);
recyclerViewPager.setLayoutManager(new LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, true));
repositories {
...
maven { url "https://jitpack.io" }
...
}
dependencies {
...
compile 'com.github.lsjwzh.RecyclerViewPager:lib:v1.1.2@aar'
...
}