欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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