当前位置: 首页 > 知识库问答 >
问题:

ViewPager2如何更改子图形顺序?

何昆
2023-03-14

我正在尝试使用重叠项目(类似轮播组件)实现ViewPager2。一切似乎都很好,但我的中心项目与下一个项目重叠。我希望我的中心物品位于任何相邻物品的前面。

见下图:

当你使用ViewPager1类时,我们可以覆盖getChildDrawingOrder。

@Override
    protected int getChildDrawingOrder(int childCount, int i)

请参见此处的示例解决方案:链接

但不能派生和扩展ViewPager2(因为ViewPager1类是最终类)。我该怎么办?

共有2个答案

翟越
2023-03-14

经过一些研究,我最终决定放弃ViewPager2,回到ViewPager1,因为我可以重写getChildDrawingOrder函数,然后我按照这个答案实现了我真正想要的。希望当ViewPager2很快定稿时,他们会让ViewPager 2课程成为非最终课程

彭高畅
2023-03-14

在引擎盖下ViewPager2包含一个RecyclView,因此如果您想更改子绘图顺序,您需要在RecyclView上执行此操作。

虽然这不是一个官方支持的解决方案,但您可以通过请求查看页面上的第一个孩子来访问回收视图。请参阅此评论:

https://issuetracker.google.com/issues/134912610#comment3

< code > val recycle view = view page 2 . get child at(0)

一旦您可以访问RecyclView,您就可以添加ChildDrawingOrderCallback

https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ChildDrawingOrderCallback

如果您正好有3个页面,并且希望中间的页面被绘制在其他页面的顶部,下面的代码可以工作。

  recyclerView.setChildDrawingOrderCallback { childCount, i ->
        when (i) {
            0 -> 0
            1 -> 2
            2 -> 1
            else -> throw IllegalStateException("Expected 3 items")
        }
    }
 类似资料:
  • 问题内容: 我在Matplotlib网站上遇到了这个示例。我想知道是否有可能增加图形尺寸。 我尝试过 但它什么也没做。 问题答案: 如果已经有了图形对象,请使用: 但是,如果您使用.subplots()命令(如您所显示的示例中所示)来创建新图形,则还可以使用:

  • 我在Matplotlib网站上看到了这个例子。我想知道是否有可能增加体型。 我试过了 但它什么也做不了。

  • 问题内容: 如何更改图像尺寸以适合打印? 例如,我想使用A4纸,其横向尺寸为11.7英寸乘8.27英寸。 问题答案: 您需要提前创建matplotlib Figure和Axes对象,并指定图形的大小:

  • 如何更改图像的大小,使其适合打印? 例如,我想使用A4纸,其尺寸为横向11.7英寸乘8.27英寸。

  • 我有以下(): 我按分配添加更多列: 如何将列移到前面,即将其设置为第一列,其他列的顺序保持不变?

  • 问题内容: 我有以下: 我通过分配添加了更多列: 如何将列mean移到最前面,即将其设置为第一列,而其他列的顺序保持不变? 问题答案: 你还可以执行以下操作: 你可以通过以下方式获取列列表: 输出将产生: …然后轻松将其放到第一个功能中即可手动重新排列