第一种:LinearLayout(线性布局)
1.概念
LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列
2.常用属性
android:orientation = "vertical" ---决定他子类控件的排布方式(vertical 或 horizontal)
android:gravity = "center"
---该属性决定他子类的xy的位置
(常用到的几个属性值:
1>center_vertical:垂直(Y轴)居中
2>center_horizontal:水平(X轴)居中
3>center:水平垂直都居中
4>right:子类控件位于当前布局的右边
5>left:子类控件位于当天布局的左边
6>bottom:子类控件位于当前布局的下边
)
3.子类控件在LinearLayout中常用到的属性
android:layout_gravity = "bottom"----指子类控件本身在当前父容器的XY的一个位置
android:layout_weight = "1" ----指本身控件占当前父容器的一个比例
注意:如果layout_height=wrap_content,就按比例显示;
如果layout_height=match_parent,显示则是反比例。
4.布局之间是相互套用去使用的。
第二种:RelativeLayout(相对布局)
1.RelativeLayout是相对布局控件,它包含的子控件将以控件之间的相对位置或者子类控件相对父类
容器的位置的方式排列
2.子类控件在RelativeLayout中常用到的属性(相对父容器的一个位置)
以下这些属性不用刻意去记,随着练习就记住了。
android:layout_alignParentLeft = "true" 子类控件相对当前父类容器靠左边
android:layout_alignParentTop = "true" 子类控件相对父类容器靠上边
android:layout_marginLeft ="41dp" 子类控件距离父类容器左边的距离
android:layout_marginTop = "33dp" 子类控件距离父类容器上边的距离
android:layout_centerInparent = "true" 子类控件相对父类容器即水平居中又垂直居中
android:layout_centerHorizontal = "true" 子类控件相对父类容器水平居中
android:layout_centerVertical = "true" 子类控件相对父类容器垂直居中
3.子类控件相对子类控件的一个位置
android:layout_below = "@+id/button1" 该控件位于给定id控件的底部
android:layout_toRightOf = "@+id/button1" 该控件位于给定id控件的右边
android:layout_above = "@+id/button1" 该控件位于给定id控件的上面
android:layout_toLeftOf = "@+id/button1" 该控件位于给定控件的左边
android:layout_alignBaseline = "@+id/button1" 该控件的内容与给定id控件的内容在一条线上
android:layout_alignBottom 该控件的底部边缘与给定ID控件的底部边缘对齐
android:layout_alignLeft 该控件的左边边缘与给定ID控件的左边边缘对齐
android:layout_alignRight 该控件的右边缘与给定ID控件的右边缘对齐
android:layout_alignTop 该控件的顶部边缘与给定ID控件的顶部对齐
第三种:FrameLayout(帧布局)
1.在FrameLayout中,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。
2.练习(显示的文字本应该放在string中的,此处为了方便才直接输入)
练习一
<TextView
android:layout_gravity="center"
android:background="#456789"
android:id="@+id/textView1"
android:layout_width="200dp"
android:layout_height="200dp"
android:text="第一个页面" />
<TextView
android:layout_gravity="center"
android:background="#785436"
android:id="@+id/textView2"
android:layout_width="150dp"
android:layout_height="150dp"
android:text="第二个页面" />
<TextView
android:layout_gravity="center"
android:background="#584693"
android:id="@+id/textView3"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="第三个页面" />
<TextView
android:layout_gravity="center"
android:background="#731548"
android:id="@+id/textView4"
android:layout_width="50dp"
android:layout_height="50dp"
android:text="第四个页面" />
效果图
练习2
<ProgressBar
android:layout_gravity="center"
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_gravity="center"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="80%" />
效果图2
第四种:AbsoluteLayout(开发基本不用到)
1.AbsoluteLayout(绝对布局)可以叫做坐标布局,可以直接指定子元素的绝对位置(xy)
2.由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差,在屏幕的适配上有缺陷(开发中少见到的原因)
3.子类控件的属性
android:layout_x="35dip" 控制当前子类控件的x位置
android:layout_y="40dip" 控制当前子类控件的y位置
第五种 TableLayout
1.TableLayout表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。
2全局属性
android:collapseColumns = "1,2" //隐藏从0开始的索引列。列直接必须用逗号隔开:1,2,5
android:shrinkCoulumns = "1,2" //收缩从0开始的索引列,当可收缩的列太宽(内容过多)不会被挤出屏幕;列直接必须用逗号隔开:1,2,5;可以用"*"代替收缩所有列,注意一列能同时表示收缩和拉伸。
android:stretchColumns="1,2" //拉伸从0开始的索引列,以填满剩下的多余空白空间,列直接必须用逗号隔开:1,2,5;可以通过"*"代替收缩所有列,注意一列能同时带上收缩和拉伸。
3内部空间所用属性(这两个属性有时需要手动敲入)
android:layout_column="1" 该控件显示在第2列
android:layout_span = "2" 该控件占据2列