View視圖
- 所有的UI元素都是通過View與ViewGroup構建的,對於一個Android應用的用戶界面來說,ViewGroup作爲容器盛裝界面中的控件,它可以包含普通的View控件,也可以包含ViewGroup。
界面佈局編寫方式
- 在XML文件中編寫佈局:推薦此種方式佈局
- 有效的將界面中佈局的代碼和Java代碼隔離,使程序的結構更加清晰。
- 在Java代碼中編寫佈局
- 在Android中所有佈局和控件的對象都可以通過new關鍵字創建出來,將創建的View控件添加到ViewGroup佈局中,從而實現View控件在佈局界面中顯示。
常見界面佈局
- 佈局的通用屬性
- Android系統提供的五種常用佈局直接或者間接繼承自ViewGroup,因此它們也支持在ViewGroup中定義的屬性,這些屬性可以看作是佈局的通用屬性。
- Android系統提供的五種常用佈局直接或者間接繼承自ViewGroup,因此它們也支持在ViewGroup中定義的屬性,這些屬性可以看作是佈局的通用屬性。
相對佈局
- 相對佈局(RelativeLayout)是通過相對定位的方式指定子控件位置,即以其它控件或父容器爲參照物,擺放控件位置。
- 定義格式
線性佈局
- 線性佈局(LinearLayout)主要以水平或垂直方式來顯示界面中的控件。當控件水平排列時,顯示順序依次爲從左到右,當控件垂直排列時,顯示順序依次爲從上到下。
注意事項- LinearLayout佈局中的android:layout_width屬性值不可設爲wrap_content。
這是因爲LinearLayout的優先級比Button高,如果設置爲wrap_content,則Button控件的android:layout_weight屬性會失去作用。
注意:當控件使用權重屬性時,佈局寬度屬性值通常設置爲0dp。<Button android:layout_width="0dp" android:layout_height="wrap_content" android: layout_weight ="2"/>
- LinearLayout佈局中的android:layout_width屬性值不可設爲wrap_content。
表格佈局
-
採用行、列的形式來管理控件,它不需要明確聲明包含多少行、多少列,而是通過在TableLayout佈局中添加TableRow佈局來控制表格的行數,通過在TableRow佈局中添加控件來控制表格的列數。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 屬性 = ”屬性值”> <TableRow> UI控件 </TableRow> ...... </TableLayout>
幀佈局
-
幀佈局(FrameLayout)用於在屏幕上創建一塊空白區域,添加到該區域中的每個子控件佔一幀,這些幀會一個一個疊加在一起,後加入的控件會疊加在上一個控件上層
-
所有控件都默認顯示在屏幕左上角。
-
定義格式
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 屬性 ="屬性值"> </FrameLayout>
約束佈局
- ConstraintLayout是Android Studio2.2新添加的佈局。
- 它適合使用可視化的方式編寫界面佈局——當然,可視化操作的背後仍然是使用XML代碼實現的,只不過這些代碼是Android Studio根據我們的操作自動生成的。
- 相對定位
- 居中定位和傾向
- Chain
① 相對定位
- 相對定位是在ConstraintLayout中創建佈局的基本構建方法之一。相對定位即一個控件相對於另一個控件進行定位。
- ConstraintLayout佈局中的控件可以在橫向和縱向上以添加約束關係的方式進行相對定位,其中,橫向邊包括Left、Start、Right、End,縱向邊包括Top、Bottom、Baseline(文本底部的基準線)。
② 居中定位和傾向
-
在ConstraintLayout佈局中,控件可以通過添加約束的方式確定該控件在父佈局(ConstraintLayout)中的相對位置。
-
當相同方向上(橫向或縱向),控件兩邊同時向ConstraintLayout添加約束,則控件在添加約束的方向上居中顯示。
-
父佈局中橫向居中
-
在約束是同向相反的情況下,默認控件是居中的,但是也像拔河一樣,兩個約束的力大小不等時,就會產生傾向。
注意:如果ConstraintLayout佈局中的控件在居中方向(橫向或者縱向)上和父佈局(ConstraintLayout)的尺寸一致,此時該方向的居中約束和傾向沒有意義。
③ Chain
- Chain(鏈)是一種特殊的約束,他使我們能夠對一組水平或豎直方向互相關聯的控件進行統一管理。一組控件通過一個雙向的約束關係鏈接起來,就能形成一個Chain。
- Chain樣式