我是否只能使用xml:
执行此操作考虑C以上B和B高于A:
答案 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的右侧,这意味着A对齐于B和C的左侧。当B消失时,第一个条件消失,因此A仅对齐离开C。