android:layout_below位置到底below到哪儿了?

android:layout_below是RelativeLayout的一个属性,其官方解释如下:

—Positions the top edge of this view below the given anchor view ID and must be a reference to another resource, in the form "@[+][package:]type:name"

我理解就是:将当前控件的顶部置于给定ID的控件之下,并且两控件应该对齐。然而事实证明我又傻傻的天真了T_T...
layout_blew.xml布局文件如下:



    

    
    
    

布局的初衷是想在同一个RelativeLayout中将“机建”放在第二栏:

android:layout_below位置到底below到哪儿了?_第1张图片

刚开始以“东航旗舰店”为参照,使用属性android:layout_below="@+id/banner_text",但由于“东航旗舰店”是动态显示的,有时候VISIBLE,有时候GONE(此时android:layout_below就找不到参照了,“机建”就会与第一栏重合),要实现正常显示就只能以“经济舱”为参照,使用android:layout_below="@+id/seat_space"。可是基于对android:layout_below属性的理解,用了觉得结果会是下面这样的(其实又添加了android:layout_alignLeft属性才是下面的效果):

android:layout_below位置到底below到哪儿了?_第2张图片

结果试了才知道真心错了,android:layout_below="@+id/seat_space"只要控件seat_space(经济舱)不设为GONE,也无论“经济舱”位置在哪儿,"机建"都会在“经济舱”的下面一排的最左边(前提是“机建”没有设置其他对齐属性)。

总结:

  • android:layout_below属性会将当前控件的顶部置于给定ID的控件之下,但并不会与给定ID的控件对齐,默认会放在父控件的最左边;
  • 可通过android:layout_alignLeftandroid:layout_alignRight等对齐属性改变当前控件设置android:layout_below属性后的默认位置,RelativeLayout的具体其他属性点这里。

你可能感兴趣的:(android:layout_below位置到底below到哪儿了?)