【问题标题】:android - linear layout bringToFront()android - 线性布局bringToFront()
【发布时间】:2013-05-19 02:59:24
【问题描述】:

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

正常顺序是

    Button 1 | Button 2 | Button 3 | Button 4

但是当我调用 button1.bringToFront() 函数时,button1 会像这样结束

    Button 2 | Button 3 | Button 4 | Button 1

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

谢谢

【问题讨论】:

  • 你在寻找什么输出?

标签: android android-linearlayout


【解决方案1】:

LinearLayout 不适用于 z 轴,因此,它的名称为 linear。尝试使用RelativeLayout,然后调用bringToFront() 以获得所需的效果。使用RelativeLayout,您可以调用layout_alignBollow 对视图进行垂直排序。或者您可以嵌套视图和布局,例如,在您的LinearLayout 中嵌套三个RelativeLayout,您可以在其中放置您的Buttons(请注意这种方法,因为添加太多视图可能是一件坏事)。

【讨论】:

  • 什么是 layout_alignBollow ?
  • 我有一排重叠的按钮。您使用 RelativeLayout 而不是 LinearLayout 的提示对我有用(结合在该 RelativeLayout 上调用 requestLayout() 和 invalidate() (它是重叠按钮的父级)。
【解决方案2】:

让您的布局调用forceLayout() 以禁用重新排列布局。

【讨论】:

  • 你能详细说明一下吗?
【解决方案3】:

由于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

【讨论】:

    【解决方案4】:

    如果您必须在 LinearLayout 中使用 z 轴,您可以使用 setTranslationZ 函数。

    例子:

    yourView.setTranslationZ(100);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多