一、线性布局(LinearLayout)(比较重要)
1、LinearLayout是一个view组(view group),其包含的所有子view都以一个方向排列,垂直或是水平方向
2、在LinearLayout使用gravity属性是操控它内部的控件的位置,而TextView使用gravity属性是操控控件中文字的位置,而不能控件本身在布局中的位置改变。
注意:
①LinearLayout中所有的子view依次排列,所以垂直列表的每一行只有一个子view,而不管行有多宽。水平列表只有一个行高(行高由最高子view的高度+padding(填充)来决定)。LinearLayout关注子view之间的margins(边缘)和每个子view的gravity(对齐方式,右、中间或是左对齐)。
eg : orientation=”vertical|horizontal”
android:gravity:控件内部的元素(对内有效)
3、android:gravity和android:layout_gravity的区别
(1)、区别:
①android:gravity:控件内部的元素(对内有效)
② android:layout_gravity:控件所在父元素的位置(对外生效)
(2)、特殊情况:
①父元素的android:orientation=”vertical”,layout_gravity 水平设置的相关属性有效
②父元素的android:orientation=”horizontal”,layout_gravity 垂直设置的相关属性有效
二、帧布局(FrameLayout)【就好象一张张卡片堆叠上去,后面会盖出前面的】
注:帧布局有点类似于awt的CardLayout都是把组件一个一个叠加到一起,
但CardLayout能将下面的组件移上来,但FrameLayout没有提供此功能(能实现比如说小视频里的点击播放功能)
三、相对布局:RelativeLayout(相对布局窗口内子组件的位置总是相对兄弟组件、父容器来决定的)
1、注意:
①注意XML中组件的顺序,不然会报错
②android新版本中组件的定义顺序没有关系
2、RelativeLayout支持的二个xml属性:
①android:gravity :设置该布局容器内各子组件的对齐方式
②android:ignoreGravity:设置哪个组件不受gravity属性的影响
3、控制子组件布局的内部RalativeLayout.LayoutParams
①boolean (相对父元素【alignParent…】)
②id型( 相对于指定元素(根据ID指定))
a.@+id和@id的区别
b.@+id/x1(添加新ID)
c. @id/x1(引用此ID)
③靠拢动作(layout_toRightOf【向左靠拢】 layout_toLeftOf【向右靠拢】)
注意:以参照物为准,你要排放组件的位置,是参照物的哪一边,就室友哪一边,不是参照物在需要摆放组件的哪一边,使用to哪一边,不要搞反了
4、子控件相关属性
①、layout_centerHorizontal:中心水平
②、layout_alignParentRight:对齐
③、layout_centerInParent:最中心
④、layout_toLeftOf:向左靠拢
⑤、layout_toRightOf:向右靠拢
⑥、layout_alignParentBottom:最底下
⑦、layout_centerVertical:中间的最左边
四、网格布局:GridLayout
1、常用属性:
① GridLayout布局相关属性:rowCount(行)columnCount(列)
②GridLayout中子控件相关属性:
a.layout_gravity=”fill_horizontal”(水平填充)
b.layout_gravity=”fill_vertical”(垂直填充)
c.layout_rowSpan=”n” (占据n行)
d.layout_columnSpan=”n” (占据n列)
2、Space标签的作用:挡住控件,让其不超出网格的范围
ps:还有一种绝对布局,但是现在已经不用了。