繁体   English   中英

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

[英]In Android, how can I set the order of children in a FrameLayout as they're added?

我有一个FrameLayout,它将包含一组ImageViews。 我正在使用FrameLayout,因为我实际上希望它们重叠。 但是,当我向Layout添加项目时,我不希望它们只是堆叠。 我实际上需要订购它们。

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

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

当我将它们放在FrameLayout中时,我需要将它们放在layerNumber顺序的Layout中。 此外,我将在使用该应用时一次添加一个或多个。 我可以选择添加“Image50 - layerNumber:10”的内容。

我希望做的是使用像ImageView.setChildOrder(x)之类的东西。 有没有办法做到这一点?

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

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

productItem.get(1)只是layerNumber。 对于这个例子,它位于第23层。

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

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

根据此线程 ,FrameLayout中子项的z顺序取决于项的添加顺序。

因此,您可以对layerNumber进行排序,然后以正确的顺序添加子项,或者您可以使用addView(视图,索引)方法。

不确定它是否是您想要的方式,但您可以简单地将ImageView声明包装到Relative / LinearLayouts中,并将每个Layout设置为id,您只需在其上调用relativeLayout1.bringToFront()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM