Android GridLayout ( 网格布局 )
GridLayout ( 网格布局 ) 和 TableLayout( 表格布局 ) 有点类似,但比 TableLayout( 表格布局 ) 更灵活更好用
- 可以自己设置布局中组件的排列方式
- 可以自定义网格布局有多少行,多少列
- 可以直接设置组件位于某行某列
- 可以设置组件横跨几行或者几列
GridLayout
GridLayout 使用虚细线将布局划分为行,列和单元格,同时也支持在行,列上进行交错排列 (虚线不存在的,是我们想象出来的)
一般使用 GridLayout 的流程如下
- 先定义组件的对其方式
android:orientation
水平或者竖直,设置多少行与多少列 - 设置组件所在的行或者列,记得是从 0 开始算的,不设置默认每个组件占一行一列
- 设置组件横跨几行或者几列;设置完毕后,需要在设置一个填充:android:layout_gravity = "fill"
GridLayout 属性
设置排列方式
属性 | 说明 |
---|---|
android:orientation | 设置子组件的排列方式,值可以是 vertical 竖直,默认 horizontal 水平 |
android:gravity | 设置子组件的排列方式,值可以是 center 居中 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 布局最经典的就是 计算器 了,这是一个天然的网格布局
-
首先创建一个 空的 Android 项目
cn.twle.android.GridLayout
-
修改
activity_main.xml
使用网格布局 计算器界面
<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"