GridLayout 使用虚细线将布局划分为行,列和单元格,同时也支持在行,列上进行交错排列 (虚线不存在的,是我们想象出来的)。
而且,GridLayout ( 网格布局 ) 和 TableLayout( 表格布局 ) 有点类似,但比 TableLayout( 表格布局 ) 更灵活更好用
- 可以自己设置布局中组件的排列方式
- 可以自定义网格布局有多少行,多少列
- 可以直接设置组件位于某行某列
- 可以设置组件横跨几行或者几列
使用 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 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"
Comments | NOTHING