(1)界面的布局有以下几种形式:
传统的说是有五大布局:
分别为: 线性布局 Linearlayout
相对布局 RelativeLayout
表格布局 TableLayout(现在已经过时了)
绝对布局 AbsolutelyLayout
帧布局 FrameLayout
常用的布局类型主要是: 线性布局和网格布局(GrideLayout),接下来详细的说明一下,这两种布局的特点。
A: 线性布局
概念:线性布局是单一方向上的布局,在 垂直或者是水平方向上,每一行或者是每一列只能有一个元素。
常用的属性:
1>orientation 控制页面布局的大致方向有 :vertical和horizontal分别代表垂直和水平方向上的属性
2>background 用于布局背景颜色或者是图片的填充
3>layout_weight 权重这个属性是很重要的,用于等比例的划分界面
a: 权重的使用:
例如 ,设父控件的宽或者是高为H,
有两个控件分别为a和b设这两个子控件的宽或者是高为H1和H2,
若现在 a和b的权重值分别为 e和f
则 a和b两个子控件的宽和高现在分别为:H1=(H-(H1+H2)))÷(e+f)*e+H1;
同理:H2=(H-(H1+H2)))÷(e+f)*f+H2;
b:对于权重值得设置问题:
如果 子控件的要设置的改变比例是在高上那么就把layout_width的值设置为0dp,相反,一样。
原因: 如果设置的取值是mach_parent 那么很显然会是控件尺寸只差为负值,这样权重大的反而占的空间会比较小,回和预期的设计有冲突
,如果将另一不变的属性设置为一个固定的值,则会造成比例失调,得不到好的调节,所以应该设置为0dp。
4>layout_gravity (适用于父控件中) 但是相对来说是父控件如果是设置的水平方向的布局,那么子空间在垂直方向的属性是有效的,而水平方向的布局属性是没有作用的,反之一样
5>gravity(适用于子控件中)子元素相对于自身如果只是在子元素中那么控制的是子控件中的内容
B:相对布局(RelativeLayout的用法)
a: 概念: 相对布局是相对与父控件的位置进行地布局
成分有:父控件和子控件
b: 属性:1)相对于父控件居中的属性:centerInParent
center_horizontal
center-vertical 而center_horizontal和center_vertical两者组合在一起相当于centerInParent
2)相对与父控件的对位置的属性:
layoutAlignParentRight
layoutAlignParentLeft
layoutAlignParentBottom
layoutAlignParentTop
接下来就介绍的是控件与控件之间的位置控制
3)兄弟控件之间的位置控制 layoutAbove
layoutBottom
layout to Right
layout to Left
4)兄弟控件之间对齐的位置控制:
layout_alignTop
layout_align Bottom
layout_alignRight
layout_alignLeft
alignBaseLine 基线可以使文字先对齐
C:在使用的时候我常犯浑的一些地方,例如相对布局不知道东西该怎样摆放总之如果牵扯到***与***对齐,那么就是用4),
如果牵扯到***在***的什么地方就用3)并且是可以组合使用的哦!
注意: 若为互斥的元素则以最后一个元素为准,在创建一个id之后可以对着个id进行重复的使用
D:下面进行简单的介绍一下帧布局和网格布局
帧布局中是层层嵌套的关系: 上层会覆盖下层
foreground 后面的会覆盖前面的
foregroundgravity组件之间不能是互斥的关系
layout_gravity会控制当前组件在父布局中的位置
网格布局:
向数组一样从(0,0)开始,layout_row,layout_column分别表示行和列 之后是
columspan跨列而rowspan跨行