持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
前两篇文章中我们介绍了,Android中的相对布局和线性布局,今天我们在来介绍一种平时开发工作中会比较多用到的布局方式,网格布局GridLayout。
网格布局是Android 4.0之后才引入的一个新型布局,和表格布局TableLayout相类似,相对于表格布局网格布局更好用一些,所以我们就不再介绍表格布局了,之后有用到的地方我们再来介绍。
网格布局的特点
- 网格布局可以设置在布局中组件的排列方式
- 网格布局可以设置行数和列数
- 网格布局可以直接设置组件位于哪一行哪一列
- 网格布局可以设置组件横跨多少行或者多少列
网格布局的属性
| 属性 | 说明 |
|---|---|
| rowCount | 设置最大行数 |
| columnCount | 设置最大列数 |
| layout_row | 设置单元格显示的行数 |
| layout_column | 设置单元格显示的列数 |
| layout_rowSpan | 设置单元格占几行 |
| layout_columnSpan | 设置单元格占几列 |
网格布局的实践
接下来我们来写一个实际例子,来使用一下网格布局的属性特点。 我们这次利用网格布局加上TextView来写一个简单的计算机画面。
首先我们来分析计算器的结构,它是由6行4列组成的。显示数值结果的区块占据2行4列,剩余每个按键占据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>
- 创建一个占据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"
/>
- 创建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"/>
至此就完成了这个计算器的布局,网格布局的使用方法还是比较简单容易理解的,我们在日后使用过程中搭配其他布局灵活变通以达到页面要求。