安卓开发教程11:网格布局GridLayout

981 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

前两篇文章中我们介绍了,Android中的相对布局和线性布局,今天我们在来介绍一种平时开发工作中会比较多用到的布局方式,网格布局GridLayout。

网格布局是Android 4.0之后才引入的一个新型布局,和表格布局TableLayout相类似,相对于表格布局网格布局更好用一些,所以我们就不再介绍表格布局了,之后有用到的地方我们再来介绍。

网格布局的特点

  1. 网格布局可以设置在布局中组件的排列方式
  2. 网格布局可以设置行数和列数
  3. 网格布局可以直接设置组件位于哪一行哪一列
  4. 网格布局可以设置组件横跨多少行或者多少列

网格布局的属性

属性说明
rowCount设置最大行数
columnCount设置最大列数
layout_row设置单元格显示的行数
layout_column设置单元格显示的列数
layout_rowSpan设置单元格占几行
layout_columnSpan设置单元格占几列

网格布局的实践

接下来我们来写一个实际例子,来使用一下网格布局的属性特点。 我们这次利用网格布局加上TextView来写一个简单的计算机画面。

image.png

首先我们来分析计算器的结构,它是由6行4列组成的。显示数值结果的区块占据2行4列,剩余每个按键占据1行1列。下面我们来实现它

  1. 创建一个由6行4列组成的的GridLayout,排列方式为水平排列。
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:rowCount="6"
   android:columnCount="4"
   android:orientation="horizontal"></GridLayout>
  1. 创建一个占据2行4列的TextView(layout_rowSpan="2",layout_columnSpan="4",用于显示数值结果。注意这里的layout_width和layout_height 都要设置为0dp,用以配合权重设置。设置权重占据2行是4列(layout_rowWeight="2",layout_columnWeight="4")
<TextView
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:gravity="center_vertical|right"
    android:textSize="100sp"
    android:text="0"
    android:layout_rowSpan="2"
    android:layout_columnSpan="4"
    android:layout_rowWeight="2"
    android:layout_columnWeight="4"
    />
  1. 创建16个占据1行1列的TextView,用于显示按键。( android:layout_rowWeight="1",android:layout_columnWeight="1")
<TextView
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@color/teal_700"
    android:layout_margin="5dp"
    android:textSize="60sp"
    android:gravity="center"
    android:text="+"
    android:textColor="@color/white"
    android:layout_rowWeight="1"
    android:layout_columnWeight="1"/>

至此就完成了这个计算器的布局,网格布局的使用方法还是比较简单容易理解的,我们在日后使用过程中搭配其他布局灵活变通以达到页面要求。