##1· 相對佈局(上) ###1.1 什麼是相對佈局(RelativeLayout) 概念:經過指定當前控件與兄弟控件或父控件之間的相對位置,從而達到控制控件位置的目的。android
###1.2 爲何要使用相對佈局佈局
這樣的界面,使用線性佈局來實現,就會消耗不少UI性能,由於須要多個線性佈局才能實現。 而若是使用相對佈局的話,那麼一個佈局就能實現,性能相較而言就會更好。性能
###1.3 相對佈局基本思路code
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第一個控件" /> </RelativeLayout>
此時效果爲:xml
接着放入第二個未指定位置的文本域,它將覆蓋到第一個文本域上面:圖片
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第二個控件" />
這時效果爲:it
例:讓第二個控件位於第一個控件右邊基礎
<TextView android:id="@+id/textView_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="30dp" android:text="第一個控件" /> <TextView android:id="@+id/textView_2" android:padding="30dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/textView_1" android:text="第二個控件" />
###1.4 相對佈局的兩組經常使用屬性 ####1.4.1 第一組相對佈局屬性im
例:layout
讓第二個控件位於第一個控件下面:
<TextView android:id="@+id/textView_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="30dp" android:background="#ff00ff" android:text="第一個控件" /> <TextView android:id="@+id/textView_2" android:background="#00ff00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView_1" android:text="第二個控件" />
其餘幾個屬性,觸類旁通便可。
####1.4.2 第二組相對佈局屬性
例:
讓第二個控件上邊緣與第一個控件對齊:
<TextView android:id="@+id/textView_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="30dp" android:background="#ff00ff" android:text="第一個控件" /> <TextView android:id="@+id/textView_2" android:background="#00ff00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/textView_1" android:text="第二個控件" />
第二個控件下邊緣與第一個控件空對齊:
##2· 相對佈局(中) ###2.1 對齊至控件的基準線(baseline) 概念:爲了保證字母看起來整齊而劃定的線 黃色部分的那條線就是基準線;
對齊基準線:android:layout_alignBaseLine="@id/xxx"
下面經過列子來展現: 這是沒有使用對齊基準線的兩個文本域:
<TextView android:id="@+id/textView_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_margin="5dp" android:text="第一個控件" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/textView_1" android:textSize="10sp" android:text="第二個控件" />
下面咱們讓第二個文本域對齊第一個文本域的基準線:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/textView_1" android:layout_alignBaseline="@id/textView_1" android:textSize="10sp" android:text="第二個控件" />
此時效果爲:
這就是對齊基準線。
###2.2 與父控件的四個邊緣對齊
例子:
讓一個文本框對齊父控件的左邊緣:
<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/textView_1" android:layout_alignParentLeft="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00FFFF" android:textSize="20sp" android:text="第一個控件" /> </RelativeLayout>
在前面的基礎上,咱們在讓其對齊父控件下邊緣,就能實現讓控件對齊到父控件的左下角:
至於其餘方向,咋們就觸類旁通。
###2.3 對齊至父控件的中央 ####屬性:
<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/textView_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00FFFF" android:layout_centerInParent="true" android:textSize="20sp" android:text="第一個控件" /> </RelativeLayout>
屬性:
layout_alignStart 對齊到控件的開頭位置
layout_alignEnd 對齊到控件的結尾位置
layout_alignParentStart 對齊到父控件的開始位置
layout_alignParentEnd 對齊到父控件的結尾位置
例子1
對齊到控件的尾部位置: 爲了便於理解,咱們須要兩個文本域:
<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/textView_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00FFFF" android:textSize="20sp" android:text="第一個控件" /> <TextView android:id="@+id/textView_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView_1" android:background="#FFFF00" android:textSize="20sp" android:text="第二" /> </RelativeLayout>
如今咱們讓第二個文本域對齊第一個文本域的尾部:
<TextView android:id="@+id/textView_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView_1" android:background="#FFFF00" android:textSize="20sp" android:layout_alignEnd="@id/textView_1" android:text="第二" />
此時效果爲:
若是是對齊到第一個文本域的開始位置:
例子2: 讓第一個文本域對齊到父控件的開始位置; 讓第二個文本域對齊到父控件的結尾位置。
<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/textView_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00FFFF" android:textSize="20sp" android:layout_alignParentStart="true" android:text="第一個控件" /> <TextView android:id="@+id/textView_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFF00" android:textSize="20sp" android:layout_alignParentEnd="true" android:text="第二" /> </RelativeLayout>
效果爲:
完。