前言:
在Android SDK刚刚问世的时候,Android提供了AbsoluteLayout,FrameLayout,LinearLayout,RelativeLayout和Tablelayout五大布局来应对终端碎片化问题。
一、LinearLayout布局
线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。
linearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
对齐:layout_gravity
垂直(vertical)的LinearLayout布局内无法通过控件的android:layout_gravity=""进行垂直居中,可以水平居中。
水平(horizontal)的LinearLayout布局内无法通过控件的android:layout_gravity=""进行水平居中,可以垂直居中。
2个都可以用布局的属性android:gravity指定所有控件的居中情况(用center可以水平,垂直居中)。
如果想要某个控件单独水平垂直居中,可以在控件外面再套个LinearLayout,然后android:gravity。
LinearLayout中gravity与layout_gravity
LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的对齐方式。
1、 部分属性
- android:orientation:指定纵向布局还是横向布局
- android:layout_marginLeft:标签外部离屏幕的左边距
- android:layout_marginTop:标签外部离屏幕的上边距
- android:textSize:字体显示的大小 注意:单位是sp
二、FrameLayout布局
三、RelativeLayout布局
四、TableLayout布局
五、AbsoluteLayout布局
1、部分属性
- android:layout_x:绝对于屏幕左上角的角落横向的距离
- android:layout_y:绝对于屏幕左上角的角落纵向的距离
代码:
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 绝对布局AbsoluteLayout --> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="60dp" android:layout_y="60dp" android:text="Button 1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="160dp" android:layout_y="160dp" android:text="Button 2" /> </AbsoluteLayout>
效果: