我有 4 个按钮A,B,C,D
。RelativeLayout
按钮 C 有时可见,有时不可见 - 取决于每次在布局出现之前明确设置的某些条件。
如果所有按钮都可见,我喜欢这样放置按钮:
一种
乙
C
D
否则,如果 C 像这样不可见
一种
乙
D
由于我使用android:layout_below="@+id/buttonX"
定位按钮,我不知道如何处理条件 C 和 D 按钮。
最好的方法是什么?
虽然我不喜欢嵌套视图,但一个简单的解决方案是将底部的两个按钮包含在 LinearLayout
前任。
<RelativeLayout>
<A>
<B>
<LinearLayout android:orientation="vertical">
<C>
<D>
</LinearLayout>
</RelativeLayout>
这样,您可以将 LinearLayout 设置在 B 以下,并且缺少 C 或 D 无关紧要
就我而言,我使用以下代码以编程方式设置父级:
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) view.getLayoutParams();
if (reliantViewVisible) {
lp.addRule(RelativeLayout.BELOW, R.id.reliantView);
} else {
lp.addRule(RelativeLayout.BELOW, R.id.fallbackView);
}
如果下一个元素是初始父元素,这可能适用于 XML
android:layout_alignWithParentIfMissing="true"
RelativeLayout 已经为您做您想做的事情。如果 C 的可见性“消失”,它将自动将 D 置于 B 之下。