在Android开发中,用户界面(User Interface,简称UI)是用户与应用交互的桥梁,UI设计的好坏直接影响用户的体验。所有的用户界面元素都是View和ViewGroup的对象构成的。View是绘制在屏幕上的用户能与之交互的一个对象。而ViewGroup则是一个用于存放其他View(和ViewGroup)对象的布局容器。
在Android开发中,所有控件和布局都继承自基类View或其子类ViewGroup,因此它们共享一些通用属性。以下是一些常见的通用属性:
属性名称 |
说明 |
常用取值 |
android:id |
为控件设置唯一标识符。 |
通常以 @+id/控件名 的形式设置 |
android:layout_width |
定义控件的宽度。 |
match_parent、wrap_content |
android:layout_height |
定义控件的高度。 |
match_parent、wrap_content |
android:layout_gravity |
定义控件在其父布局中的对齐方式。 |
top、bottom、center、left、right |
android:layout_margin |
定义控件与其父布局或兄弟控件之间的外边距。 |
具体数值或分别指定四个方向的边距 |
android:padding |
定义控件内部的填充。 |
具体数值或分别指定上下左右的填充 |
android:background |
设置控件的背景。 |
颜色值、drawable资源、状态选择器 |
一、布局管理
1.LinearLayout(线性布局)
是一种简单的布局方式,它将所有子控件按顺序排列,可以是垂直排列或水平排列。
常用属性
属性 |
说明 |
android:orientation |
设置子视图的排列方向(horizontal 或 vertical) |
android:gravity |
设置子控件的整体对齐方式 |
android:layout_weight |
权重,设置子视图在剩余空间中的分配比例 |
android:divider |
分割线 |
android:showDividers |
设置分割线所在位置(none(无)、beginning(开始)、end(结束)、middle(每两个组件间)) |
android:dividerPadding |
设置分割线的padding |
使用场景:适合简单的上下或左右排列的布局。
2.RelativeLayout(相对布局)
是一种更加灵活的布局方式,子控件可以相对于父容器或其他子控件进行布局。
常用属性
属性 |
说明 |
layout_toLeftOf |
当前视图在指定视图的左边 |
layout_toRightOf |
当前视图在指定视图的右边 |
layout_above |
当前视图在指定视图的上方 |
layout_below |
当前视图在指定视图的下方 |
layout_alignLeft |
当前视图与指定视图的左侧对齐 |
layout_alignRight |
当前视图与指定视图的右侧对齐 |
layout_alignTop |
当前视图与指定视图的顶部对齐 |
layout_alignBottom |
当前视图与指定视图的底部对齐 |
layout_centerInParent |
当前视图在上级视图中间 |
layout_centerHorizontal |
当前视图在上级视图的水平方向居中 |
layout_centerVertical |
当前视图在上级视图的垂直方向居中 |
layout_alignParentLeft |
当前视图与上级视图的左侧对齐 |
layout_alignParentRight |
当前视图与上级视图的右侧对齐 |
layout_alignParentTop |
当前视图与上级视图的顶部对齐 |
layout_alignParentBottom |
当前视图与上级视图的底部对齐 |
使用场景:适合需要灵活排列控件、相互依赖的布局。
3.ConstraintLayout(约束布局)
通过约束来定义控件之间的关系,提供灵活、高效的布局管理。
常用属性
属性 |
说明 |
layout_constraintTop_toTopOf |
将当前视图的顶部与指定视图的顶部对齐 |
layout_constraintBottom_toBottomOf |
将当前视图的底部与指定视图的底部对齐 |
layout_constraintStart_toStartOf |
将当前视图的开始边缘(左或右,取决于布局方向)与指定视图的开始边缘对齐 |
layout_constraintEnd_toEndOf |
将当前视图的结束边缘(右或左,取决于布局方向)与指定视图的结束边缘对齐 |
layout_constraintHorizontal_bias |
设置当前视图在水平方向上的偏移量(0到1之间的值),用于微调对齐位置 |
layout_constraintVertical_bias |
设置当前视图在垂直方向上的偏移量(0到1之间的值),用于微调对齐位置 |
layout_marginStart |
设置当前视图在开始边缘(左或右)的外边距 |
layout_marginEnd |
设置当前视图在结束边缘(右或左)的外边距 |
layout_marginTop |
设置当前视图在上边缘的外边距 |
layout_marginBottom |
设置当前视图在下边缘的外边距 |
layout_constraintDimensionRatio |
设置当前视图的宽度和高度之间的比例(例如,"16:9" 表示宽度是高度的16/9) |
layout_goneMarginStart |
当指定的约束视图被设置为GONE时,设置当前视图在开始边缘的外边距 |
layout_goneMarginEnd |
当指定的约束视图被设置为GONE时,设置当前视图在结束边缘的外边距 |
layout_goneMarginTop |
当指定的约束视图被设置为GONE时,设置当前视图在上边缘的外边距 |
layout_goneMarginBottom |
当指定的约束视图被设置为GONE时,设置当前视图在下边缘的外边距 |
使用场景:可以替代大多数布局,特别是复杂的界面布局,适合多屏幕适配和动态布局。
4.FrameLayout(帧布局)
所有子视图按顺序叠加在一起,后加入的控件会覆盖在之前的控件之上。
常用属性
属性 |
说明 |
android:foreground |
设置FrameLayout容器的前景图像,该图像会永远处于帧布局的最上面,不会被其他子视图所覆盖 |
android:foregroundGravity |
设置前景图像在FrameLayout中的对齐方式 |
使用场景:适合简单的层叠布局,比如图片叠加文字,或用于嵌入其他布局(如 Fragment)。
5.GridLayout(网格布局)
将控件排列成网格,支持行和列的定义。
常用属性
属性 |
说明 |
android:orientation |
设置GridLayout的布局方向。可选值为horizontal或vertical。会按方向依次排满后自动换行 |