Android六大基本布局

 

  • 基本理论
    Android六大基本布局分别是:线性布局LinearLayout、表格布局TableLayout、相对布局RelativeLayout、
    层布局FrameLayout、绝对布局AbsoluteLayout、网格布局GridLayout。
    其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。
    在手机程序设计中,绝对布局基本上不用,用得相对较多的是线性布局和相对布局
  • 各个布局的使用
    (一)线性布局
    线性布局在开发中使用最多,具有垂直方向与水平方向的布局方式,通过设置属性“android:orientation”控制方向,属性值垂直(vertical)和水平(horizontal),默认水平方向。
    android:gravity:内部控件对齐方式,常用属性值有center、center_vertical、center_horizontal、top、bottom、left、right等。
    这个属性在布局组件RelativeLayout、TableLayout中也有使用,FrameLayout、AbsoluteLayout则没有这个属性。
    center:居中显示,这里并不是表示显示在LinearLayout的中心,当LinearLayout线性方向为垂直方向时,center表示水平居中,但是并不能垂直居中,此时等同于center_horizontal的作用;同样当线性方向为水平方向时,center表示垂直居中,等同于center_vertical。

    top、bottom、left、right顾名思义为内部控件居顶、低、左、右布局。
    这里要与android:layout_gravity区分开,layout_gravity是用来设置自身相对于父元素的布局。

    android:layout_weight:权重,用来分配当前控件在剩余空间的大小。
    使用权重一般要把分配该权重方向的长度设置为零,比如在水平方向分配权重,就把width设置为零
  • RelativeLayout
    相对布局可以让子控件相对于兄弟控件或父控件进行布局,可以设置子控件相对于兄弟控件或父控件进行上下左右对齐。
    RelativeLayout能替换一些嵌套视图,当我们用LinearLayout来实现一个简单的布局但又使用了过多的嵌套时,就可以考虑使用RelativeLayout重新布局。
    相对布局就是一定要加Id才能管理。

    RelativeLayout中子控件常用属性:
    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  父控件的中央;
  • FrameLayout

帧布局或叫层布局,从屏幕左上角按照层次堆叠方式布局,后面的控件覆盖前面的控件。
该布局在开发中设计地图经常用到,因为是按层次方式布局,我们需要实现层面显示的样式时就可以
采用这种布局方式,比如我们要实现一个类似百度地图的布局,我们移动的标志是在一个图层的上面。
在普通功能的软件设计中用得也不多。层布局主要应用就是地图方面。

  • AbsoluteLayout
     绝对布局中将所有的子元素通过设置android:layout_x 和 android:layout_y属性,将子元素的坐标位置固定下来,即坐标(android:layout_x, android:layout_y) ,layout_x用来表示横坐标,layout_y用来表示纵坐标。屏幕左上角为坐标(0,0),横向往右为正方,纵向往下为正方。实际应用中,这种布局用的比较少,因为Android终端一般机型比较多,各自的屏幕大小。分辨率等可能都不一样,如果用绝对布局,可能导致在有的终端上显示不全等。
  • TableLayout
    表格布局,适用于多行多列的布局格式,每个TableLayout是由多个TableRow组成,一个TableRow就表示TableLayout中的每一行,这一行可以由多个子元素组成。实际上TableLayout和TableRow都是LineLayout线性布局的子类。但是TableRow的参数android:orientation属性值固定为horizontal,且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。所以TableRow实际是一个横向的线性布局,且所以子元素宽度和高度一致。
    注意:在TableLayout中,单元格可以为空,但是不能跨列,意思是只能不能有相邻的单元格为空。
    TableLayout常用属性:
    android:shrinkColumns:设置可收缩的列,内容过多就收缩显示到第二行
    android:stretchColumns:设置可伸展的列,将空白区域填充满整个列
    android:collapseColumns:设置要隐藏的列
    列的索引从0开始,shrinkColumns和stretchColumns可以同时设置。
    子控件常用属性:
    android:layout_column:第几列
    android:layout_span:占据列数
  • GridLayout(网格布局)
    作为android 4.0 后新增的一个布局,与前面介绍过的TableLayout(表格布局)其实有点大同小异;
    不过新增了一些东东
    ①跟LinearLayout(线性布局)一样,他可以设置容器中组件的对齐方式
    ②容器中的组件可以跨多行也可以跨多列(相比TableLayout直接放组件,占一行相比较)
    因为是android 4.0新增的,API Level 14,在这个版本以前的sdk都需要导入项目。这里不解释。

    常用属性:
    排列对齐:
    ①设置组件的排列方式:   android:orientation=""     vertical(竖直,默认)或者horizontal(水平)
    ②设置组件的对齐方式:   android:layout_gravity=""   center,left,right,buttom

    设置布局为几行几列:
    ①设置有多少行: android:rowCount="4"        //设置网格布局有4行
    ②设置有多少列: android:columnCount="4"    //设置网格布局有4列

    设置某个组件位于几行几列
    注:都是从0开始算的哦!
    ①组件在第几行: android:layout_row = "1"   //设置组件位于第二行
    ②组件在第几列: android:layout_column = "2"   //设置该组件位于第三列

    设置某个组件横跨几行几列:
    ①横跨几行: android:layout_rowSpan = "2"     //纵向横跨2行
    ②横跨几列: android:layout_columnSpan = "3"     //横向横跨2列
  • 常用属性

除上面讲过之外常用的几个布局的属性:
(1)layout_margin
用于设置控件边缘相对于父控件的边距
android:layout_marginLeft
android:layout_marginRight
android:layout_marginTop
android:layout_marginBottom

(2) layout_padding
用于设置控件内容相对于控件边缘的边距
android:layout_paddingLeft
android:layout_paddingRight
android:layout_paddingTop
android:layout_paddingBottom

(3) layout_width/height
用于设置控件的高度和宽度
wrap_content 内容包裹,表示这个控件的里面文字大小填充
fill_parent 跟随父窗口
match_parent

(4) gravity
用于设置View组件里面内容的对齐方式
top bottom left   right  center等

(5) android:layout_gravity  
用于设置Container组件的对齐方式
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

本文转载https://www.cnblogs.com/web424/p/6961764.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值