Android布局
1、LinearLayout
线性布局,这种布局在平时的开发中用的最多,内部控件只能水平或竖直进行排列,在搭建较复杂的界面时会有点麻烦。
常用属性
- android:orientation 控制控件排列方向,属性值为垂直(vertical)和水平(horizontal),默认水平方向。
- android:gravity:内部控件对齐方式,常用属性值有center、center_vertical、center_horizontal、top、bottom、left、right等。
- android:layout_gravity 设置自身相对于父元素的布局。
- android:layout_weight:权重,用来分配当前控件在剩余空间的大小
- 注意:使用权重一般要把分配该权重方向的长度设置为零,比如在水平方向分配权重,就把width设置为零。
效果图
2、RelativeLayout
相对布局,可以让子控件相对于兄弟控件或父控件进行布局,可以设置子控件相对于兄弟控件或父控件进行上下左右对齐。
注意:这个布局中的控件一定要加id才可以进行布局
常用属性
(1)相对于父控件,例如:android:layout_alignParentTop=“true”
- android:layout_alignParentTop 控件的顶部与父控件的顶部对齐;
- android:layout_alignParentBottom 控件的底部与父控件的底部对齐;
- android:layout_alignParentLeft 控件的左部与父控件的左部对齐;
- android:layout_alignParentRight 控件的右部与父控件的右部对齐;
(2)相对给定Id控件,例如:android:layout_above=“@id/**”
- android:layout_above 控件的底部置于给定ID的控件之上;
- android:layout_below 控件的底部置于给定ID的控件之下;
- android:layout_toLeftOf 控件的右边缘与给定ID的控件左边缘对齐;
- android:layout_toRightOf 控件的左边缘与给定ID的控件右边缘对齐;
- android:layout_alignBaseline 控件的baseline与给定ID的baseline对齐;
- android:layout_alignTop 控件的顶部边缘与给定ID的顶部边缘对齐;
- android:layout_alignBottom 控件的底部边缘与给定ID的底部边缘对齐;
- android:layout_alignLeft 控件的左边缘与给定ID的左边缘对齐;
- android:layout_alignRight 控件的右边缘与给定ID的右边缘对齐;
(3)居中,例如:android:layout_centerInParent=“true”
- android:layout_centerHorizontal 水平居中;
- android:layout_centerVertical 垂直居中;
- android:layout_centerInParent 父控件的中央;
效果图
简单来说就是先写好一个控件,其他控件的位置会以第一个控件的位置作为标准进行定位。
3、FrameLayout
帧布局或叫层布局,从屏幕左上角按照层次堆叠方式布局,后面的控件覆盖前面的控件。该布局在地图开发中经常用到。
常用属性
- android:layout_width="match_parent" 设置宽度
- android:layout_height="match_parent" 设置高度
效果图
4、AbsoluteLayout
绝对布局中将所有的子元素通过设置android:layout_x 和 android:layout_y属性,将子元素的坐标位置固定下来,即坐标(android:layout_x, android:layout_y) ,屏幕左上角为坐标(0,0),横向往右为正方,纵向往下为正方。实际应用中,因为Android终端一般机型比较多,这种布局用的比较少。
常用属性
- android:layout_x="20dp" 设置横坐标
- android:layout_y="20dp" 设置纵坐标
效果图
5、TableLayout
表格布局,适用于多行多列的布局格式,每个TableLayout是由多个TableRow组成,一个TableRow就表示TableLayout中的每一行,这一行可以由多个子元素组成。
注意:在TableLayout中,单元格可以为空,但是不能跨列,意思是只能不能有相邻的单元格为空。
常用属性
(1)TableLayout常用属性:
- android:shrinkColumns:设置可收缩的列,内容过多就收缩显示到第二行
- android:stretchColumns:设置可伸展的列,将空白区域填充满整个列
- android:collapseColumns:设置要隐藏的列
- 列的索引从0开始,shrinkColumns和stretchColumns可以同时设置。
(2)TableRow常用属性:
- android:layout_column:第几列
- android:layout_span:占据列数
效果图