在 Android 中,如何在添加子项时设置 FrameLayout 中子项的顺序?

2023-12-26

我有一个 FrameLayout,它将容纳一组 ImageView。我使用 FrameLayout 是因为我实际上希望它们重叠。但是,当我将项目添加到布局中时,我不希望它们只是堆叠。我实际上需要订购它们。

图像是从存储中提取的,我将它们的正确顺序存储在我的数据库中,因此:

Image1 - layerNumber: 3
Image2 - layerNumber: 12
Image3 - layerNumber: 1
Image4 - layerNumber: 34
Image5 - layerNumber: 6
Image6 - layerNumber: 30

当我将它们放置在 FrameLayout 中时,我需要将它们按照 LayerNumber 顺序放置在布局中。另外,当我使用该应用程序时,我会一次添加一个或多个。我可能会添加“Image50 - layerNumber: 10”的选项卡。

我希望做的是使用类似 ImageView.setChildOrder(x) 或类似的东西。有什么办法可以做到这一点吗?

- - - 编辑 - - - 根据 @fifarunnerr 我做了这样的事情:

productLayers.addView(productIV, Integer.parseInt(productItem.get(1)));

productItem.get(1)只是层数。在本例中,它位于第 23 层。

我收到错误:java.lang.IndexOutOfBoundsException: index=23 count=3

我理解这个错误:我试图在第 23 个位置有 3 个“点”的布局中放置一个视图。正如您在我之前的数字中所看到的,layerNumber 并不总是采用 1..2..3..4... 模式。


FrameLayout 中子项的 z 顺序取决于添加项目的顺序,根据这个线程 https://stackoverflow.com/a/4685019/1571490.

因此,您可以对图层编号进行排序,然后按正确的顺序添加子图层,或者您可以使用addView(视图,索引) http://developer.android.com/reference/android/view/ViewGroup.html#addView%28android.view.View,%20int%29 method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 中,如何在添加子项时设置 FrameLayout 中子项的顺序? 的相关文章

随机推荐