Android布局

布局

LinearLayout

  1. orientation
  2. gravity 控制组件所包含的所有子元素对齐方式
  3. layout_gravity 控制组件在父容器的对齐方式
    • 若父容器的orientation为vertical(从上往下布局),所以一个控件控制的位置为水平的位置
  4. background
  5. divider 分割线(也可以使用View设计)
    • src
    • showDividers 分割线所在位置:none(无)、beginning、end、middle
    • dividerPadding 设置分割线的padding,左右间距分隔
  6. layout_weight(权重)等比例划分区域,对应长度一般设置0dp
    注意:是在原来的基础上进行增加;若任何的一个为match_parent 则该占比所有
    其他情况的计算思路:都为match_parent,第一个为2,第二个第三个都为1,则需要屏幕3,有屏幕1,所以剩余屏幕-2
    则第一块区域:1-2*(2/4)=0;所以第一块不显示,以此类推
    注意因为orientation为竖直方向,则weight对应竖直方向的比例

RelativeLayout

默认从左上角开始,后将前覆盖

根据父容器定位

根据兄弟组件定位

FrameLayout帧布局

默认从左上角开始,后将前覆盖


<FrameLayout
        android:layout_width="300sp"
        android:layout_height="300sp"
        android:foreground="@mipmap/ic_launcher"
        android:foregroundGravity="right|bottom"
        android:background="#ffff00"/>

TableLayout表格布局

默认占满一行,所以需要与TableRow搭配使用
每一行占满不会自己缩小

  1. 相对整个布局
<!--    android:collapseColumns="0,2"隐藏第几个控件,从0开始-->
<!--    android:stretchColumns="1"第二个控件允许被拉伸,前提需要有空间-->
<!--    android:shrinkColumns="1"第二个空间被压缩,前提是当前行被挤压到,注意:当前行太长可能整个空间不见-->
  1. 相对于子控件
<!--        android:layout_column="2"跳过几列去显示-->
<!--        android:layout_span="2"当前控件跨越几列去显示-->

整体案例说明

<?xml version="1.0" encoding="utf-8"?>
<!--    android:collapseColumns="0,2"隐藏第几个控件,从0开始-->
<!--    android:stretchColumns="1"第二个控件允许被拉伸,前提需要有空间-->
<!--    android:shrinkColumns="1"第二个空间被压缩,前提是当前行被挤压到,注意:当前行太长可能整个空间不见-->
<TableLayout
    android:shrinkColumns="1"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TableRow>
<!--        android:layout_column="2"跳过几列去显示-->
<!--        android:layout_span="2"当前控件跨越几列去显示-->
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:layout_span="2"
            android:text="第一个">
        </Button>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二个"></Button>
    </TableRow>
    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一个">
        </Button>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二个"></Button>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一个">
        </Button>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二个"></Button>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一个">
    </TableRow>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第一个">
    </Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第二个">
    </Button>
</TableLayout>

GirdLayout网格布局

<!--android:orientation="vertical"水平还是竖直-->
<!--android:columnCount="3"若为水平,则最多几个控件,剩下自动换行-->
<!--android:rowCount="3"若为竖直,最。。。-->
<!--android:layout_columnWeight="1"
        android:layout_rowWeight="1"横向、纵向权重-->
<!--android:layout_rowSpan="2"横向纵向跨几行几列-->
<?xml version="1.0" encoding="utf-8"?>
<GridLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第一个"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_row="1"
        android:layout_column="0"
        android:layout_columnSpan="3"
        android:layout_gravity="fill"
        android:text="第二个"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_row="0"
        android:layout_column="1"
        android:text="第三个"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第四个"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"></Button>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第五个"
        android:layout_columnWeight="1"></Button>
</GridLayout>

表格布局与网格布局的区别

tablelayout只能把两行进行合并
gridlayout可以把行合并,也可以把列合并,布局也会更加灵活

ConstraintLayout约束布局

直接在Split模式下操作

  1. 相对于父布局,用弹簧、四周圆点
  2. 控件之间对齐,圆点
  3. 右侧设置对应控件属性
  4. 辅助线:三角形时转换方向,显示对应方向距离;还有百分比的,可以用控件与辅助线之间关系(这一项很难转换,百分比未成功)
  5. 推导约束:Infer Constraints
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值