Android的六大布局
程序员文章站
2024-02-10 22:07:22
...
Linear Layout(线性布局)、Frame Layout(帧布局)、Relative Layout(相对布局)、Absolute Layout(绝对布局)、Table Layout(表格布局)、Absolute Layout(绝对布局)。
一、Linear Layout
这个布局会将它所包含的控件在线生方向上依次排列,我们可以通过android:orientation这个属性指定排列方向是vertical还是horizontal。
常用的属性:
android:layout_gravity: 本元素相对于父元素的重力方向
android:layout_weight:子元素对未占用空间水平或垂直分配权重值
android:gravity[setGravity(int)] :本元素所有子元素的重力方向
android:orientation[setOrientation(int)]:线性布局以列或行来显示内部子元素
android:divider[setDividerDrawable(Drawable)]:设置垂直布局时两个控件之间的分隔条
android:baselineAligned[setBaselineAligned(boolean)]:该属性为false,将会阻止该布局管理器与它的子元素的基线对齐
android:measureWithLargestChild[setMeasureWithLargestChildEnabled(boolean)]当该属性设置为true时,所有带权重的子元素都会具有最大子元素的最小尺寸
二、Relative Layout
android:layout_toxxxOf 这个是一个控件位于另一个控件上下左右的相对位置。
android:layout_alignxx表示一个控件与另一个控件对齐。
相对位置规则:
android:layout_above 将该控件的底部至于给定ID的控件之上
android:layout_below 将该控件的顶部至于给定ID的控件之下
android:layout_toLeftOf 将该控件的右边缘和给定ID的控件的左边缘对齐
android:layout_toRightOf 将该控件的左边缘和给定ID的控件的右边缘对齐
兄弟控件对齐规则:
android:layout_alignBaseline 将该控件的baseline和给定ID的控件的baseline对齐
android:layout_alignBottom 将该控件的底部边缘与给定ID控件的底部边缘对其
android:layout_alignTop 将给定控件的顶部边缘与给定ID控件的顶部对齐
android:layout_alignLeft 将该控件的左边缘与给定ID控件的左边缘对齐
android:layout_alignRight 将该控件的右边缘与给定ID控件的右边缘对齐
父控件对齐规则:
android:alignParentBottom 如果该值为true,则将该控件的底部和父控件的底部对齐
android:layout_alignParentLeft 如果该值为true,则将该控件的左边与父控件的左边对齐
android:layout_alignParentRight 如果该值为true,则将该控件的右边与父控件的右边对齐
android:layout_alignParentTop 如果该值为true,则将空间的顶部与父控件的顶部对齐
*位置规则:
android:layout_centerVertical 如果值为真,该控件将被至于垂直方向的*
android:layout_centerHorizontal 如果值为真,该控件将被至于水平方向的*
android:layout_centerInParent 如果值为真,该控件将被至于父控件水平方向和垂直方向的*
重力规则:
android:gravity[setGravity(int)]设置容器内各个子组件的重力方向
android:ignoreGravity[setIgnoreGravity(int)]设置容器哪个子组件的不受重力方向影响
三、Frame Layout
为每个加入其中的组件创建一个空白的区域(即一帧),每个子组件占据一帧,这些帧都会根据gracity属性自动对齐并按照添加的顺序叠加在一起。
这是最简单的布局,所有放在布局里的控件,都按照层次堆叠在屏幕的左上角,后加进来的控件覆盖前面的控件。但控件可以通过android:layout_gravity属性控制自己在父控件中的位置。
FrameLayout的一些属性:
android:foreground[setForeground(Drawable)] 定义帧布局容器的绘图前景图像
android:foregroundGravity[setForegroundGravity(int)] 定义绘图前景图像的重力属性
四、Table Layout
Table Layout允许我们使用表格的方式来排列控件。
相关的属性:
android:collapseColumns[setColumnCollapsed(int,boolean)] 设置需要被藏的列的列号,多个列号之间用逗号隔开
android:shrinkColumns[setShrinkAllColumns(boolean)] 设置允许被收缩的列的列号,多个列号之间用逗号隔开
android:stretchColumns[setStretchAllColumns(boolean)] 设置允许被拉伸的列的列号,多个列号之间用逗号隔开
五、Grid Layout
Grid Layout是Anroid 4.0之后新增的布局管理器,Grid Layout与前面的Table Layout有点类似,不过他有很多前面没有的东西,因此更加好用。
排列对齐:
- 设置组件的排列方式: android:orientation=”” vertical(竖直,默认)或者horizontal(水平)
- 设置组件的对齐方式: android:layout_gravity=”“[setGravity(int)] center,left,right,buttom,如果想同时用两种的话:buttom|left
设置布局为几行几列:
- 设置有多少行:android:rowCount=”4”[setrowCount(int)] //设置网格布局有4行
- 设置有多少列:android:columnCount=”4”[setColumnCount(int)] //设置网格布局有4列
设置某个组件位于几行几列:
- 组件在第几行:android:layout_row = “1” //设置组件位于第二行
- 组件在第几列:android:layout_column = “2” //设置该组件位于第三列
设置某个组件横跨几行几列:
- 横跨几行:android:layout_rowSpan = “2” //纵向横跨2行
- 横跨几列:android:layout_columnSpan = “3” //横向横跨2列
其他设置:
- 布局管理器采用的对齐方式:android:alignmentMode[setAlignmentMode(int)]
- 布局管理器是否保留列序号:android:columnOrderPreserved[setColumnOrderPreserved(boolean)]
- 布局管理器是否保留行序号:android:rowOrderPreserved[setRowOrderPreserved(boolean)]
- 布局管理器是否使用默认的页边距:android:useDefaultMargins[setUseDefaultMargins(boolean)]
六、Absolute Layout
它不提供任何布局控制,而是由开发人员自己通过X、Y坐标来控制组件的位置。每个子组件都指定android:layout_x, android:layout_y两个定位属性。
px(像素):每个对应屏幕上的一个点
dip或dp(device independent pixels,设备独立像素):一种基于屏幕密度的抽象单位,在每英寸160点的显示器上,1dip=1px
sp(scaled pixels,比例像素):主要处理字体的大小,可以根据字体大小首选项进行缩放
in(英寸):标准长度单位
最后欢迎大家访问我的个人网站:1024s