1. 布局屬性的命名前綴規律
與父容器相關的前綴
layout_alignParent
:相對于父容器的對齊方式。
例如:layout_alignParentTop="true"
(相對于父容器頂部對齊)。layout_margin
:與父容器或其他控件的邊距。
例如:layout_marginTop="16dp"
(距離父容器頂部或上方控件 16dp)。layout_gravity
:控件在父容器中的對齊方式(僅部分布局支持,如?LinearLayout
)。
與兄弟控件相關的前綴
layout_align
:與其他控件的對齊方式。
例如:layout_alignTop="@id/otherView"
(與?otherView
?的頂部對齊)。layout_toRightOf
/layout_below
:相對于其他控件的位置。
例如:layout_toRightOf="@id/button1"
(位于?button1
?的右側)。
控件自身特性前綴
android:gravity
:控件內部內容的對齊方式。android:padding
:控件內容與自身邊界的距離。android:layout_width
/layout_height
:控件自身的寬高。
2. 不同布局容器的特性與常用屬性
LinearLayout(線性布局)
- 特有屬性:
android:orientation
(水平 / 垂直排列)。layout_weight
(權重,控制控件在剩余空間中的占比)。layout_gravity
(控件在當前方向的對齊方式,如?layout_gravity="right"
?在垂直方向有效)。
RelativeLayout(相對布局)
- 核心邏輯:通過與其他控件或父容器的相對位置關系定位。
- 特有屬性:
layout_alignParentXXX
(與父容器對齊)。layout_alignXXX
(與其他控件對齊)。layout_toXXXOf
(相對于其他控件的位置)。layout_centerInParent
/layout_centerHorizontal
(居中對齊)。
FrameLayout(幀布局)
- 特性:所有控件堆疊在左上角,后添加的控件覆蓋在前的控件。
- 常用屬性:
layout_gravity
(控制控件在容器中的對齊方式)。
ConstraintLayout(約束布局)
- 核心邏輯:通過控件間的約束關系(連線)定位。
- 特有屬性:
app:layout_constraintStart_toEndOf
(左側連接到另一個控件的右側)。app:layout_constraintVertical_bias
(垂直方向的偏移比例)。app:layout_constrainedWidth
/layout_constrainedHeight
(約束寬高)。
TableLayout/GridLayout
- 特性:表格或網格布局,通過行列定位。
- 特有屬性:
layout_column
/layout_row
(指定單元格位置)。
3. 記憶技巧
-
按前綴分組:
layout_alignParentXXX
?→ 與父容器相關。layout_alignXXX
/layout_toXXXOf
?→ 與其他控件相關。layout_gravity
?→ 控件在父容器中的對齊(部分布局支持)。android:gravity
/android:padding
?→ 控件自身內容的對齊或內邊距。
-
結合布局特性:
- 線性布局:關注?
orientation
?和?weight
。 - 相對布局:關注各種?
layout_align
?和?layout_toXXXOf
。 - 約束布局:關注約束連線的方向(
Start_toEndOf
、Top_toBottomOf
?等)。
- 線性布局:關注?
-
通過可視化工具輔助:
Android Studio 的布局編輯器可直觀調整屬性,幫助理解屬性作用。
4. 常見混淆點
layout_gravity
?vs?android:gravity
:前者控制控件在父容器中的位置,后者控制控件內部內容的位置。margin
?vs?padding
:前者是控件與外部的距離,后者是控件內容與邊界的距離。- RelativeLayout 的?
layout_align
?與 ConstraintLayout 的約束:前者直接指定控件 ID,后者通過方向約束。
通過前綴和布局特性的組合記憶,能快速掌握不同場景下的布局屬性!如果遇到具體屬性不理解,建議在 Android Studio 中實時預覽效果,加深記憶。