美文网首页
页面布局知识点

页面布局知识点

作者: 探戏者 | 来源:发表于2017-08-30 09:41 被阅读0次

    布局

    LinearLayout 线性布局

    这种布局方式比较常用,也很简单,每个元素按照顺序依次线性排列。

    LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多少;如果是水平排列,那么将是一个单行N列的结构。如果搭建两行两列的结构,通常的方式是先垂直排列两个元素,每一个元素里再包含一个LinearLayout进行水平排列。

    LinearLayout 属性:

    android: orientation="vertical"

    值有水平(horizontal)和垂直(vertical)两个。

    LinearLayout 属性及子元素属性

    android:layout_weight="1"

    它用于描述该子元素在剩余空间中占有的大小比例,一般建议layout_width="0dp" 或 layout_height="0dp" 配上 layout_weight 就可以实现对整个空间的比例分割了。

    LinearLayout 子元素属性

    android:layout_gravity="right"

    值包含如下:

    含意
    top 将对象放在其容器的顶部,不改变其大小.
    bottom 将对象放在其容器的底部,不改变其大小.
    left 将对象放在其容器的左侧,不改变其大小.
    right 将对象放在其容器的右侧,不改变其大小.
    center_vertical 将对象纵向居中,不改变其大小. 垂直对齐方式:垂直方向上居中对齐。
    fill_vertical 必要的时候增加对象的纵向大小,以完全充满其容器. 垂直方向填充
    center_horizontal 将对象横向居中,不改变其大小.水平对齐方式:水平方向上居中对齐
    fill_horizontal 必要的时候增加对象的横向大小,以完全充满其容器.水平方向填充
    center 将对象横纵居中,不改变其大小.
    fill 必要的时候增加对象的横纵向大小,以完全充满其容器.
    clip_vertical 附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容. 剪切基于其纵向对齐设置:顶部对齐时,剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部.垂直方向裁剪
    clip_horizontal 附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容. 剪切基于其横向对齐设置:左侧对齐时,剪切右侧;右侧对齐时剪切左侧;除此之外剪切左侧和右侧.水平方向裁剪
    总结:
    • 有一个布局方向,水平或者竖直
    • 在竖直布局下,左对齐、右对齐,水平居中生效
    • 在水平布局下,顶部对齐、底部对齐、竖直居中生效
    • 权重:按比例分配屏幕的剩余宽度或者高度

    RelativeLayout 相对布局

    RelativeLayout是一种相对布局,控件的位置是按照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最常用,也是最灵活的一种布局。

    RelativeLayout用到的一些重要的属性:

    第一类:属性值为true或false

    android:layout_centerHrizontal 水平居中
    android:layout_centerVertical 垂直居中
    android:layout_centerInparent 相对于父元素完全居中
    android:layout_alignParentBottom 贴紧父元素的下边缘
    android:layout_alignParentLeft 贴紧父元素的左边缘
    android:layout_alignParentRight 贴紧父元素的右边缘
    android:layout_alignParentTop 贴紧父元素的上边缘
    android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

    第二类:属性值必须为id的引用名“@id/id-name”

    android:layout_below 在某元素的下方
    android:layout_above 在某元素的的上方
    android:layout_toLeftOf 在某元素的左边
    android:layout_toRightOf 在某元素的右边
    android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
    android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
    android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
    android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

    第三类:属性值为具体的像素值,如30dip,40px

    android:layout_marginBottom 离某元素底边缘的距离
    android:layout_marginLeft 离某元素左边缘的距离
    android:layout_marginRight 离某元素右边缘的距离
    android:layout_marginTop 离某元素上边缘的距离

    总结:
    • 组件默认位置都是左上角,组件之间可以重叠
    • 可以相对于父元素上下左右对齐,相对于父元素,水平居中、竖直居中、水平竖直同时居中
    • 可以相对于其他组件上下左右对齐
    • 可以布局于其他组件的上方、下方、左边、右边

    FrameLayout 帧布局

    在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。

    总结:
    • 组件默认位置都是左上角,组件之间可以重叠
    • 可以设置上下左右对齐,水平竖直居中,设置方式与线性布局一样

    TableLayout 表格布局

    表格布局是按照表的形式布局。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。TableRow是LinearLayout的子类,TableRow也是容器,因此可以向TableRow里面添加其他组件,每添加一个组件该表格就增加一列。

    表格布局常用的属性如下:

    android:collapseColumns:隐藏指定的列
    android: shrinkColumns:收缩指定的列以适合屏幕,不会挤出屏幕
    android: stretchColumns:尽量把指定的列填充空白部分
    android: layout_column:控件放在指定的列
    android: layout_span:该控件所跨越的列数

    总结:
    • 每有一个TableRow子节点表示一行,该子节点的每一个子节点都表示一列
    • TableLayout的一级子节点默认宽都是匹配父元素
    • TableRow的子节点默认宽高都是包裹内容

    AbsoluteLayout 绝对布局

    在此布局中的子元素的android:layout_x和android:layout_y属性将生效,用于描述该子元素的坐标位置。屏幕左上角为坐标原点(0,0),第一个0代表横坐标,向右移动此值增大,第二个0代表纵坐标,向下移动,此值增大。在此布局中的子元素可以相互重叠。在实际开发中,通常不采用此布局格式,因为它的界面代码过于刚性,以至于有可能不能很好的适配各种终端。在Android2.0 API文档中标明该类已经过期,可以使用FrameLayout或者RelativeLayout来代替。

    相关文章

      网友评论

          本文标题:页面布局知识点

          本文链接:https://www.haomeiwen.com/subject/xyyzdxtx.html