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