GridLayout网格布局

发布于 2022-04-09  88 次阅读


GridLayout 使用虚细线将布局划分为行,列和单元格,同时也支持在行,列上进行交错排列 (虚线不存在的,是我们想象出来的)。

而且,GridLayout ( 网格布局 ) 和 TableLayout( 表格布局 ) 有点类似,但比 TableLayout( 表格布局 ) 更灵活更好用

  1. 可以自己设置布局中组件的排列方式
  2. 可以自定义网格布局有多少行,多少列
  3. 可以直接设置组件位于某行某列
  4. 可以设置组件横跨几行或者几列

使用 GridLayout 的流程如下

  1. 先定义组件的对其方式 android:orientation 水平或者竖直,设置多少行与多少列
  2. 设置组件所在的行或者列,记得是从 0 开始算的,不设置默认每个组件占一行一列
  3. 设置组件横跨几行或者几列;设置完毕后,需要在设置一个填充:android:layout_gravity = "fill"

.

GridLayout 属性

设置排列方式

属性属性值说明
android:orientationvertical 竖直,默认
horizontal 水平
设置子组件的排列方式
android:gravitycenter 居中
left 靠左
right 靠右
bottom 底部....
设置子组件的排列方式,如果想要同时使用两种,可以用 left|bottom

.

设置几行几列

属性属性值说明
android:rowCount整型数字设置网格布局有几行
android:columnCount整型数字设置网格布局有几列

.

设置组件所在的行或列

注意: 行列从 0 开始计算,比如第一行是 0 ,第二行是 1

属性属性值说明
android:layout_row整型数字设置组件位于第几行
android:layout_column整型数字设置组件位于第几列

.

设置组件跨几行几列

属性属性值说明
android:layout_rowSpan整型数字设置组件跨几行
android:layout_columnSpan整型数字设置组件跨几列

.

计算器布局

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:columnCount="4"
    android:orientation="horizontal"
    android:rowCount="6" >

    <TextView
        android:layout_columnSpan="4"
        android:layout_gravity="fill"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="#dddddd"
        android:text="0"
        android:textSize="50sp" />

    <Button
        android:layout_columnSpan="2"
        android:layout_gravity="fill"
        android:text="清空" />

    <Button
        android:layout_columnSpan="2"
        android:layout_gravity="fill"
        android:text="回退" />

    <Button android:text="1" />

    <Button android:text="2" />

    <Button android:text="3" />

    <Button android:text="+" />

    <Button android:text="4" />

    <Button android:text="5" />

    <Button android:text="6" />

    <Button android:text="-" />

    <Button android:text="7" />

    <Button android:text="8" />

    <Button android:text="9" />

    <Button android:text="*" />

    <Button android:text="0"
        android:layout_columnSpan="2" 
        android:layout_gravity="fill" />

    <Button
        android:layout_width="wrap_content"
        android:text="." />

    <Button android:text="/" />

</GridLayout>

注意: 如果想要让某个组件填满横越过的行或列,需要添加属性: android:layout_gravity = "fill"


谢谢你能看完呀~~~