Android - 线性布局bringToFront()

8

我的线性布局中有4个按钮,我需要将第一个按钮置于最前面。

正常顺序是

    Button 1 | Button 2 | Button 3 | Button 4

但是,当我调用button1.bringToFront()函数时,button1将会被置于最前面。

    Button 2 | Button 3 | Button 4 | Button 1

我该怎么解决这个问题。 相对布局不会导致此问题,但我必须使用LinearLayout,因为按钮将垂直排列,并且在某些情况下我要删除一个按钮。
谢谢

你想要什么输出? - Iftikar Urrhman Khan
4个回答

10

LinearLayout 无法在z轴方向上工作,因此被命名为 linear。尝试使用 RelativeLayout 然后调用 bringToFront() 来获得所需的效果。使用 RelativeLayout 可以调用 layout_alignBottom 将视图按垂直顺序排列。或者您可以嵌套视图和布局,在您的 LinearLayout 中嵌套三个 RelativeLayout,然后在其中放置您的 Buttons(请小心使用此方法,因为添加太多视图可能会导致问题)。


什么是layout_alignBottom? - dracula
我有一排重叠的按钮。你提供的使用RelativeLayout而不是LinearLayout的建议对我有用(结合在该RelativeLayout上调用requestLayout()和invalidate()方法,因为它是这些重叠按钮的父容器)。 - MacD

1
如果你在 LinearLayout 中需要使用 z 轴,可以使用 setTranslationZ 函数。
示例:
yourView.setTranslationZ(100);

0

由于 bringToFront 会破坏 LinearLayout 的顺序,我决定使用 RelativeLayout 并将“顶部”视图(我想要置于顶部的视图)放在 XML 中的最后。

示例:

<RelativeLayout ...>

    <ViewBelow
        android:layout_below="@+id/view_on_top"
        ...
        />

    <!-- Last view in XML appears above other views on screen -->
    <ViewOnTop
        android:id="@+id/view_on_top"
        ...
        />

</RelativeLayout>

在这个问题的具体情况下,ViewOnTop将是按钮1,而ViewBelow将是包含其他按钮的LinearLayout

0

让你的布局调用forceLayout()来禁用布局的重新排列。


你能详细说明一下吗? - Tushar Gogna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接