Android 学习笔记 布局/布局常用属性(学校课程)

前言

LinearLayout 线性布局

布局排列方式

  • 垂直布局 orientation = “vertical”
  • 水平布局 orientation = “horizontal”
1
2
3
4
<LinearLayout
// 垂直布局
android:orientation="horizontal">
</LinearLayout>

大小格式

  • 充满父类 match_parent
  • 根据内容改变 wrap_content
    1
    2
    3
    4
    5
    6
    7
    <LinearLayout
    // 设置宽高均为充满父类
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    // 垂直布局
    android:orientation="horizontal">
    </LinearLayout>

权重

  • android:layout_weight=”1”

RelativeLayout 相对布局

  • 是通过相对定位的方式让控件出现在布局任意位置;
  • 在相对布局中如果不指定控件摆放的位置,那么控件都会被默认放在RelativeLayout的左上角。
  • 因此要先指定第一个控件的位置,其他控件为该位置的相对位置;
  • RelativeLayout属性: (使用相对布局属性需要先指定控件的id,其他控件根据该控件的id,来确定相对于该控件的相对位置)
  • 第一个控件默认在布局左上角,如果指定放在第一个控件的左边或者上面,会看不到第二个控件
1
2
3
4
5
6
<RelativeLayout
// 设置宽高均为充满父类
android:layout_width="match_parent"
android:layout_height="match_parent">
......
</RelativeLayout>

与兄弟控件的边缘对齐:(值为id)@id/

android:layout_below 将该控件的上边缘对齐指定控件的下边缘
android:layout_above 将该控件的下边缘对齐指定控件的上边缘
android:layout_toLeftOf 将该控件的右边缘对齐指定控件的左边缘

android:layout_toRightOf 将该控件的左边缘对齐指定控件的右边缘

android:layout_alignRight 将此控件的右边缘与给定ID的控件右边缘对齐。
android:layout_alignLeft 将此控件的左边缘与给定ID的控件左边缘对齐。
android:layout_alignTop 将此控件的上边缘与给定ID的控件上边缘对齐。
android:layout_alignBottom 将此控件的底部边缘与给定ID的控件底部边缘对齐。

与父控件的边缘对齐: (属性值为true,false)

  • (可以同时使用两个属性,如android:layout_alignParentRight ?android:layout_alignParentBottom 表示将该控件放到父控件的右下角)
    android:layout_alignParentLeft 将此控件的左边缘与父容器的左边缘匹配。
    android:layout_alignParentRight 将此控件的右边缘与父容器的右边缘匹配。
    android:layout_alignParentTop 将此控件的上边缘与父容器的上边缘匹配。
    android:layout_alignParentBottom 将此控件的底部边缘与父容器的底部边缘匹配。

对齐置父控件的中间: (属性值为true,false)

android:layout_centerInParent 放置到父控件的正中间
android:layout_centerHorizontal 放置到父控件的水平中间

android:layout_centerVertical 放置到父控件的垂直中间

android:layout_alignStart 对齐置兄弟控件的起始位置
android:layout_alignEnd 对齐置兄弟控件的末尾位置
android:layout_alignParentStart 对齐置父控件的起始位置
android:layout_alignParentEnd 对齐置父控件的末尾位置

基准线

android:layout_alignBaseline 对齐基准线 (值为id)

控件之间的距离设置

android:padding:指定控件中的内容与到此控件的四边缘的距离

android:layout_margin:设置此控件的四边缘与其他控件的距离

android:paddingBottom:设置控件内容与控件下边缘的距离
android:paddingTop:设置控件内容与控件上边缘的距离
android:paddingLeft:设置控件内容与控件左边缘的距离

android:paddingRight:设置控件内容与控件右边缘的距离

android:layout_marginBottom:设置此控件的下边缘与其他控件的距离
android:layout_marginTop:设置此控件的上边缘与其他控件的距离
android:layout_marginLeft:设置此控件的左边缘与其他控件的距离
android:layout_marginRight:设置此控件的右边缘与其他控件的距离

FrameLayout 帧布局

android:layout_gravity:控制位置
android:foreground:设置改帧布局容器的前景图像
android:foregroundGravity:设置前景图像显示的位置

TableLayout 表格布局

  • 相信学过HTML的朋友都知道,我们可以通过< table >< tr >< td >就可以生成一个HTML的表格, 而Android中也允许我们使用表格的方式来排列组件,就是行与列的方式,就说我们这节的TableLayout! 但却不像我们后面会讲到的Android 4.0后引入的GridLayout(网格)布局一样,直接就可以设置多少行与多少列!

  • 如何确定行数与列数
    ①如果我们直接往TableLayout中添加组件的话,那么这个组件将占满一行!!!
    ②如果我们想一行上有多个组件的话,就要添加一个TableRow的容器,把组件都丢到里面!
    ③tablerow中的组件个数就决定了该行有多少列,而列的宽度由该列中最宽的单元格决定
    ④tablerow的layout_width属性,默认是fill_parent的,我们自己设置成其他的值也不会生效!!! 但是layout_height默认是wrap_tencontent的,我们却可以自己设置大小!
    ⑤整个表格布局的宽度取决于父容器的宽度(占满父容器本身)
    ⑥有多少行就要自己数啦,一个tablerow一行,一个单独的组件也一行!多少列则是看tableRow中 的组件个数,组件最多的就是TableLayout的列数

  • 三个常用属性
    android:collapseColumns:设置需要被隐藏的列的序号
    android:shrinkColumns:设置允许被收缩的列的列序号
    android:stretchColumns:设置运行被拉伸的列的列序号
    以上这三个属性的列号都是从0开始算的,比如shrinkColunmns = “2”,对应的是第三列!
    可以设置多个,用逗号隔开比如”0,2”
    除了这三个常用属性,还有两个属性,分别就是跳格子以及合并单元格,这和HTML中的Table类似:
    android:layout_column=”2”:表示的就是跳过第二个,直接显示到第三个格子处,从1开始算的!
    android:layout_span=”4”:表示合并4个单元格,也就说这个组件占4个单元格

GridLayout 网格矩阵布局

  • GridLayout布局是Android4.0(API Level 14)新引入的网格矩阵形式的布局控件。

属性
android:columnCount
说明:GridLayout的最大列数
android:rowCount
说明:GridLayout的最大行数
android:orientation
说明:GridLayout中子元素的布局方向。有以下取值:
horizontal – 水平布局。

vertical – 竖直布局。

android:layout_column
说明:显示该子控件的列,例如android:layout_column=”0”,表示当前子控件显示在第1列,android:layout_column=”1”,表示当前子控件显示在第2列。
android:layout_columnSpan
说明:该控件所占的列数,例如android:layout_columnSpan=”2”,表示当前子控件占两列。

android:layout_row
说明:显示该子控件的行,例如android:layout_row=”0”,表示当前子控件显示在第1行,android:layout_row=”1”,表示当前子控件显示在第2行。

android:layout_rowSpan
说明:该控件所占的行数,例如android:layout_rowSpan=”2”,表示当前子控件占两行。

android:layout_columnWeight
说明:该控件的列权重,与android:layout_weight类似,例如有GridLayout上两列,都设置android:layout_columnWeight = “1”,则两列各占GridLayout宽度的一半

android:layout_rowWeight
说明:该控件的行权重,原理同android:layout_columnWeight。

平均分配格行/列的问题

GridLayout在Android 5.1(API Level 21)时引入了android:layout_columnWeight和android:layout_rowWeight来解决平分问题,但是API21前怎么办呢?

  1. 需要用到兼容包:
  • 1.compile ‘com.android.support:gridlayout-v7:22.+’
  • 2.布局中使用android.support.v7.widget.GridLayout
    <android.support.v7.widget.GridLayout

    </android.support.v7.widget.GridLayout>
  • 3.使用app:layout_columnWeight 和app:layout_rowWeight 设置权重

后记

  • Android学习记录,老师笔记加自己的笔记
  • 欢迎进入我的博客https://yhf7.github.io/
  • 如果有什么侵权的话,请及时添加小编微信以及qq也可以来告诉小编(905477376微信qq通用),谢谢!
-------------本文结束感谢您的阅读-------------
0%