Android的6大布局

一. Android有哪6大布局?

LinearLayout:线性布局

RelativeLayout:相对布局

TableLayout:表格布局

FrameLayout:帧布局

AbsoluteLayout:绝对布局

GridLayout:网格布局


二. LinearLayout -- 线性布局

(1) 常用属性:orientation、gravity、layout-gravity、layout-width、layout-height、id、background。

(2) layout-weight 权重比例计算方法

假设父布局为LinearLayout, orientation为horizontal, 里面有3个TextView. 他们的layout-weight分别设置为x1,x2,x3

① 两个TextView的layout-width都为0dp或者layout-wrap时,他们水平方向所占的比例为x1:x2:x3

② 两个TextView的layout-width都为match-parent时,每个布局的比份为1+(1-3)*x1/(x1+x2+x3).

    比如x1 = 1, x2 = 2 , x3 = 3时,计算结果为2/3:1/3:0即2:1:0,此时第三个布局不占空间。

(3) 代码中设置layout-weight

setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1));

(4) 分割线

① 在代码中使用view,将高度设为1px

② divider:分割线的drawable资源

     showDividers:none, beggining, middle, end分割线的位置

    dividerPadding:分割线padding

(5) 当orientation为horizontal时,竖直方向的设置不起作用;为vertical时,水平方向设置不起作用

三. RelativeLayout -- 相对布局

(1) 多层嵌套的布局会降低运行效率,特别是在ListView,GridView的item里,尽量不要嵌套布局。RelativeLayoutt可减少布局嵌套

(2) 常用属性:gravity、ignoreGravity...

(3) margin设置为负数的使用。比如一些广告右上角一个"x",点击后可以去掉广告,此时可以设置两个ImageView, "x"图片对应的ImageView与第一个右上对齐,然后设置其margin left top为负值


四. TableLayout -- 表格布局 (实际开发中使用比较少)

(1) 直接在TableLayout添加控件,则该组件会占一行

(2) 在一行添加多个控件,使用TableRow, TableRow的layout-width属性默认为match_parent, 设置其它的也会无效。

(3) 常用属性:collapseColumns  设置需要被隐藏列的序列号,从0开始

  shrinkColumns 设置允许被收缩列的序列号, 当该行宽度不够用时,该序列号的列会被收缩以撑满该行,从0开始

  stretchColumns 设置允许被拉伸列的序列号,当该行宽度有余时,该序列号的列会拉伸以撑满该行,从0开始

          layout_column = x, 表示跳过第x个,直接从第x+1个开始显示,从1开始

          layout_span = x, 合并x个单元格,表示这个控件占x个单元格


五. FrameLayout -- 帧布局

(1) 在Framlayout里add控件时,会默认添加到左上角,该布局没有任何定位方式,但是可以通过layout_gravity指定其添加的位置

(2) 常用属性:foreground:设置该帧布局容器的 前景图像(永远处于帧布局的最上面,不会被覆盖)

          foregroundGravity:前景图像显示的位置


六. GridLayout -- 网格布局

(1) Android4.0加入的布局,与TableLayout类似,但是功能更多,4.0以前版本使用需要导入v7jar包

(2) 常用属性:orientation、layout_gravity

  rowCount、columnCount:行、列数

  layout_row、layout_column:设置组件所在的行、列(设置在控件的属性上)

          layout_rowSpan、layout_columnSpan:横、纵向跨的行、列数

  layout_gravity="fill":控件跨行列时,需要撑满行列可设置该属性(设置在控件属性上)


七. AbsoluteLayout -- 绝对布局 (基本不用)

通过x、y来控制字控件的位置 layout_x, layout_y,绝对布局会给屏幕适配上造成困难,实际开发中基本不会使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值