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"
我理解就是:將當(dāng)前控件的頂部置于給定ID的控件之下,并且兩控件應(yīng)該對齊贺待。然而事實證明我又傻傻的天真了T_T...
layout_blew.xml布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/banner_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignWithParentIfMissing="true"
android:layout_marginBottom="3dp"
android:layout_marginRight="6dp"
android:includeFontPadding="false"
android:text="東航旗艦店"
android:visibility="visible"
android:textSize="15sp"/>
<TextView
android:id="@+id/seat_space"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/banner_text"
android:layout_toRightOf="@+id/banner_text"
android:includeFontPadding="false"
android:textSize="13sp"
android:visibility="visible"
tools:text="經(jīng)濟(jì)艙"/>
<TextView
android:id="@+id/airport_price_fee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/seat_space"
android:includeFontPadding="false"
android:textSize="12sp"
tools:text="機(jī)建0"/>
</RelativeLayout>
布局的初衷是想在同一個RelativeLayout中將“機(jī)建”放在第二欄:
剛開始以“東航旗艦店”為參照,使用屬性android:layout_below="@+id/banner_text"
零截,但由于“東航旗艦店”是動態(tài)顯示的,有時候VISIBLE秃臣,有時候GONE(此時android:layout_below
就找不到參照了涧衙,“機(jī)建”就會與第一欄重合),要實現(xiàn)正常顯示就只能以“經(jīng)濟(jì)艙”為參照奥此,使用android:layout_below="@+id/seat_space"
弧哎。可是基于對android:layout_below
屬性的理解稚虎,用了覺得結(jié)果會是下面這樣的(其實又添加了android:layout_alignLeft
屬性才是下面的效果):
結(jié)果試了才知道真心錯了撤嫩,android:layout_below="@+id/seat_space"
,只要控件seat_space(經(jīng)濟(jì)艙)不設(shè)為GONE蠢终,也無論“經(jīng)濟(jì)艙”位置在哪兒序攘,"機(jī)建"都會在“經(jīng)濟(jì)艙”的下面一排的最左邊(前提是“機(jī)建”沒有設(shè)置其他對齊屬性)。
總結(jié):
-
android:layout_below
屬性會將當(dāng)前控件的頂部置于給定ID的控件之下寻拂,但并不會與給定ID的控件對齊程奠,默認(rèn)會放在父控件的最左邊; - 可通過
android:layout_alignLeft
祭钉、android:layout_alignRight
等對齊屬性改變當(dāng)前控件設(shè)置android:layout_below
屬性后的默認(rèn)位置瞄沙,RelativeLayout的具體其他屬性點這里。