在相对布局中调整视图在其他视图中的可见性的位置?

时间:2015-05-22 09:46:45

标签: android android-layout

我是否只能使用xml:

执行此操作
  1. 相对布局中的View-A与某些View-B对齐 可见。
  2. 相对布局中的View-A与某些View-C对齐 视图-B消失了?
  3. 考虑C以上B和B高于A:

    enter image description here

2 个答案:

答案 0 :(得分:3)

您不能直接在xml中执行此操作,但根据您的需要,您可以使用layout_alignWithParentIfMissing

例如,如果View-A与View-B保持对齐,而View-B可见性为Gone,则View-A将保持与其相对布局父对齐。

见下一个例子:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:id="@+id/viewB"
        android:layout_width="20dp"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true" />

    <View
        android:id="@+id/viewA"
        android:layout_width="20dp"
        android:layout_height="match_parent"
        android:layout_toLeftOf="@id/viewB"
        android:layout_alignWithParentIfMissing="true" />

</RelativeLayout>

如果viewB可见,则viewB将位于RelativeLayout的右侧,viewA将位于其左侧。如果viewB消失了,viewA将位于RelativeLayout的右侧。

没有这一行:

android:layout_alignWithParentIfMissing="true" />
当viewB消失时,

viewA将显示在RelativeLayout处...

对于您的示例,您只需要通过layout_above替换layout_toLeftOf属性。

否则,您需要在您的活动(或片段,或任何地方......)中以编程方式更改View-A或View-B对齐方式。

答案 1 :(得分:1)

我假设订单是B左边的A(如果B不可见,则是C),但是如果你颠倒订单则适用相同的逻辑。假设您可以执行以下操作:

  • 使B对齐A
  • 在C
  • 的左侧对齐

这样,当B可见时,它将位于A的右侧,这意味着A对齐于B和C的左侧。当B消失时,第一个条件消失,因此A仅对齐离开C。