RelativeLayout具有可选/条件关系以进行定位

时间:2012-04-19 19:32:38

标签: android xml

我在A,B,C,D上有4个按钮RelativeLayout

按钮C有时是可见的,有时不是 - 取决于在布局出现之前每次设置的某些条件。

如果所有按钮都可见,我喜欢按下这样的按钮:

A

C

d

否则,如果C不可见,则

A

d

由于我使用android:layout_below="@+id/buttonX"来定位按钮,我不知道如何处理条件C和D按钮。

最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

虽然我不喜欢嵌套视图,但一个简单的解决方案是在LinearLayout中包含你的底部两个按钮

实施例

<RelativeLayout>

     <A>
     <B>

     <LinearLayout android:orientation="vertical">
       <C>
       <D>
     </LinearLayout>

</RelativeLayout>

这样你可以将LinearLayout设置为低于B,如果缺少C或D则无关紧要

答案 1 :(得分:0)

对于我来说,我使用以下代码通过编程方式设置了父对象:

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"

答案 2 :(得分:-1)

RelativeLayout已经为你做了你想做的事。如果C的可见性“消失”,它会自动将D置于B以下。