新人一枚,Android四大布局管理器基础知识总结
程序员文章站
2024-03-25 19:52:04
...
Android布局管理器
Android提供四大布局管理器(线性布局LinearLayout、表格布局TableLayout、帧布局FrameLayout、相对布局RelativeLayout),绝对布局已经废弃。
线性布局LinearLayout
线性布局是将放入其中的组件按照垂直或水平方向来布局。
基本格式
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
属性列表
>
</LinearLayout>
属性列表
属性 | 介绍 | 属性值 | 介绍 |
---|---|---|---|
android:id | 设置组件id | @+id/button1 | 为组件设置了button1的id,可以通过findViewById(R.id.button1)找到该组件 |
android:orientation | 组件排列方式 | horizontal | 水平对齐 |
vertical | 垂直对齐 | ||
android:gravity | 组件对齐方式 | top、bottom、left、right | 上下左右对齐方式,也可以通过top|left来设置左上对齐方式,类推。 |
center_vertical、center_horizontal | 垂直居中显示、水平居中显示 | ||
center | 横纵居中对齐 | ||
fill_vertical | 必要的时候增加对象的纵向大小,以完全充满其容器. 垂直方向填充 | ||
fill_horizontal | 必要的时候增加对象的横向大小,以完全充满其容器. 水平方向填充 | ||
fill | 必要的时候增加对象的横纵向大小,以完全充满其容器. | ||
clip_vertical | 附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容. 剪切基于其纵向对齐设置:顶部对齐时,剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部.垂直方向裁剪 | ||
clip_horizontal | 附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容. 剪切基于其横向对齐设置:左侧对齐时,剪切右侧;右侧对齐时剪切左侧;除此之外剪切左侧和右侧.水平方向裁剪 | ||
android:layout_width | 设置组件宽度 | match_parent | 组件宽度与父容器宽度相同 |
wrap_parent | 组件宽度恰好能包裹它的内容 | ||
120dp | 数值+单位 | ||
android:layout_height | 设置组件高度 | match_parent | 组件高度与父容器高度相同 |
wrap_parent | 组件高度恰好能包裹它的内容 | ||
120dp | 数值+单位 | ||
layout_weight | 组件空间分配权重 | 1或者2或者3… | 根据比例来划分空间 |
android:background | 为组件设置背景 | #FFFFFF | 设置颜色 |
@drawable/background | 设置为图片,图片放在drawable中 | ||
以下属性不理解可查盒子模型 | 盒子模型 | 盒子模型 | 盒子模型 |
android:layout_marginTop | 上外边距 | 20dp | 数值+单位 |
android:layout_marginBottom | 下外边距 | 20dp | 数值+单位 |
android:layout_marginLeft | 左外边距 | 20dp | 数值+单位 |
android:layout_marginRight | 右外边距 | 20dp | 数值+单位 |
android:paddingTop | 上内边距 | 20dp | 数值+单位 |
android:paddingBottom | 下内边距 | 20dp | 数值+单位 |
android:paddingLeft | 左内边距 | 20dp | 数值+单位 |
android:paddingRight | 右内边距 | 20dp | 数值+单位 |
表格布局TableLayout
以行和列的形式来管理放入其中的UI组件。
基本格式
<TableLayout xmlns:android=http://schemas.android.com/apk/res/android
属性列表
>
<TableRow 属性列表> 需要添加的UI组件 </TableRow>
<!--多个TableRow 每个TableRow就是一行-->
</TableLayout>
属性列表
支持线性布局所有属性
属性 | 介绍 | 属性值 | 介绍 |
---|---|---|---|
android:collapseColumns | 设置需要被隐藏的列的列序号,多个列序号之间用逗号隔开 | 1,2 | 列序号 |
android:shrinkColumns | 设置允许被收缩的列的列序号,多个列序号之间用逗号隔开 | 2,0 | 列序号 |
android:stretchColumns | 设置允许被拉伸的列的列序号,多个列序号之间用逗号隔开 | 1,2 | 列序号 |
帧布局FrameLayout
在帧布局管理器中,每放入一个组件,都将创建一个空白的区域,通常称为一帧,这些帧都会根据gravity属性执行自动对齐,后面的组件可以覆盖前面的组件。简单点说就是一层一层叠在一起。
基本格式
<FrameLayout xmlns=http://schemas.android.com/apk/res/android
属性列表
>
</FrameLayout>
属性列表
支持线性布局所有属性(可能吧,不确实,没试过)
属性 | 介绍 | 属性值 | 介绍 |
---|---|---|---|
android:foreground | 设置该帧布局容器的前景图像 | @drawable/foreground | 该图像始终置于前面,不被其他帧所覆盖 |
android:foregroundGravity | 设置前景图像显示的位置 | 属性值同gravity |
相对布局RelativeLayout
相对布局是按照组件之间的相对位置来进行布局,如某一个组件在另一个组件的左边、右边、上边、下边。
基本格式
<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android
属性列表
>
</RelativeLayout>
属性列表
支持线性布局所有属性(可能吧,不确实,没试过)
属性 | 介绍 | 属性值 | 介绍 |
---|---|---|---|
android:ignoreGravity | 用于指定那个组件不受gravity属性的影响 | @+id/button1 | 该id所表示的组件不受gravity属性影响 |
RelativeLayout提供了一个内部类RelativeLayout.LayoutParams来控制相对布局管理器中各组件的分布方式,如下:
属性 | 介绍 | 属性值 | 介绍 |
---|---|---|---|
android:layout_above | 属性值为其他UI组件id,用于指定该组件位于那个组件上方 | 以下属性值皆为id | |
android:layout_below | 指定该组件位于哪一个组件的下方 | ||
android:layout_layout_toLeftOf | 指定该组件位于哪一个组件的左方 | ||
android:layout_toRightOf | 指定该组件位于哪一个组件的右方 | ||
android:layout_alignBottom | 用于指定该组件与那一个组件的下边界对齐 | ||
android:layout_alignTop | 用于指定该组件与哪一个组件的上边界对于 | ||
android:layout_alignLeft | 左边界对齐 | ||
android:layout_alignRight | 右边界对齐 | ||
android:layout_alignParentBottom | 指定该组件是否与布局管理器底端对齐 | 以下属性值皆为boolean值(true/false) | |
android:layout_alignParetnTop | 指定该组件是否与布局管理器的顶端对齐 | ||
android:layout_alignParentLeft | 指定该组件是否与布局管理器的左端对齐 | ||
android:layout_alignParentRight | 指定该组件是否与布局管理器的右端对齐 | ||
android:layout_centerVertical | 是否垂直居中 | ||
android:layout_centerHorizontal | 是否水平居中 | ||
android:layout_centerInParent | 是否横纵居中 |
啦啦啦啦
各布局可以嵌套使用。
欢迎大家批评指正!
上一篇: Js的NaN解说
下一篇: Android 之 线性布局