如何通过正确的视图 z 顺序在 android 中实现这个基本布局

Posted

技术标签:

【中文标题】如何通过正确的视图 z 顺序在 android 中实现这个基本布局【英文标题】:How can I achieve this basic layout in android with the proper z-ordering of views 【发布时间】:2010-09-14 11:20:36 【问题描述】:

如何在android中实现如下布局?

我想要的是让 3 个蓝色框在他们的视图中顶部对齐,然后我想让红色框在蓝色框下方居中,但是这样当我为红色框设置动画时,它滑动到蓝色框下方。

我尝试将蓝色和红色框放置在不同的布局中,但是一旦我为红色框设置动画,如果它超出其布局的边界,它就会消失(我不希望红色框的布局夹住红框,我想让红框滑到蓝框下面,让蓝框遮挡住红框。)

我还设法使用一系列嵌套布局创建了这个布局,但是由于绘制顺序,红色框总是出现在蓝色框的顶部。我尝试使用 bringToFront() 方法,但我发现这只适用于同一布局中的兄弟视图。不幸的是,在将所有 4 个视图保持在同一布局中的同时,我无法获得这种类型的布局。有什么建议么? (另外,如果有人对这个问题的标题有更好的建议,我会全力以赴)

【问题讨论】:

【参考方案1】:

尝试使用RelativeLayout。如果您知道蓝色框的高度,则可以始终先绘制红色框,然后在布局中添加蓝色框,这将确保蓝色框始终位于红色框的顶部。

您还可以考虑使用 SurfaceView,您可以在其中轻松订购商品且无需任何 xml 定义...

【讨论】:

嘿,效果比我想象的要好。我之前尝试过RelativeLayout,但没有成功,但再次尝试我能够弄清楚。虽然我不相信有任何方法可以将红色框置于蓝色框下方(如果视图宽度不同),但我所做的是将红色框设置在蓝色框下方,然后 toRightOf 最左边的蓝色框,并确保红色和蓝色视图的宽度相同。当我运行红色框向上移动的动画时,为了解决 z 顺序问题,我只需使用bringToFront() 将蓝色框发送到前面。瞧!谢谢 WarrenFaith

以上是关于如何通过正确的视图 z 顺序在 android 中实现这个基本布局的主要内容,如果未能解决你的问题,请参考以下文章

SplitViewController - 可以更改 rootview 和 detailview 的 z 顺序吗?

如何按字母顺序对表格视图单元格进行排序

SwiftUI Negative Padding Z 顺序

如何更改 UIView 的 z 索引或堆栈顺序?

按类型和字母顺序 A->Z 对树视图节点进行排序

在 Android 中动态且顺序地用颜色填充图像视图或位图