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
vsandroid:gravity
:前者控制控件在父容器中的位置,后者控制控件内部内容的位置。margin
vspadding
:前者是控件与外部的距离,后者是控件内容与边界的距离。- RelativeLayout 的
layout_align
与 ConstraintLayout 的约束:前者直接指定控件 ID,后者通过方向约束。
通过前缀和布局特性的组合记忆,能快速掌握不同场景下的布局属性!如果遇到具体属性不理解,建议在 Android Studio 中实时预览效果,加深记忆。