我有一个包含多个视图的viewPager。viewPager的默认行为是首先显示第一项,然后向右滑动显示当前视图的右边的第二个视图等。
我想要的行为是,在显示第一项后,向左滑动会显示下一个视图,并将其显示在当前项的左侧。
我搜索了很多聪明的方法来实现这个功能,但没有结果。提前感谢。
我有一个包含多个视图的viewPager。viewPager的默认行为是首先显示第一项,然后向右滑动显示当前视图的右边的第二个视图等。
我想要的行为是,在显示第一项后,向左滑动会显示下一个视图,并将其显示在当前项的左侧。
我搜索了很多聪明的方法来实现这个功能,但没有结果。提前感谢。
当ViewPager被附加到视图时,您可以简单地使用setCurrentItem()
导航到ViewPager中的最后一页。
现在您可以在Recyclerview中水平显示项目。
有一个选项可以将recyclerview项目按相反的顺序显示。
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, true)); // last parameter is isReverse
https://github.com/lsjwzh/RecyclerViewPager
这段代码将会把RecyclerView以反向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'
...
}
我正在寻找一种反转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上进行了测试。