GridLayout

网格容器布局, 能够兼容的写出相似Excel表格同样的效果;android

GridLayout 属性

排列模式

android:alignmentModebash

  • alignBounds 对齐边界
  • alignMargins 对齐margin

若是子视图存在margin(边距), 能够控制是否对齐margin仍是对齐子视图的边界. padding无效布局

行数

android:columnCount 列数spa

android:rowCount 行数3d

超过行数或者列数就会自定换行code

android:columnOrderPreservedcdn

android:rowOrderPreservedxml

以上两个属性是控制行或者列的最大范围是否跟随最大值blog

android:orientation 方向string

android:useDefaultMargins 默认边距

是否使用默认的边距(8dp), 默认false.

若是GridLayout不给子控件设置任何属性, 将默认从左到右/从上到下排列. 超过指定行列就换行

LayoutParams

GridLayout的每一个网格都是一个Cell. 这些子控件时经过指定属性来指定其在网格中的位置

控制

默认不填写属性的状况下是依次排列行和列, 可是你能够经过手动指定行列控制排列(能够出现重叠)

android:layout_column 整数n,在哪一列开始显示n=[0, 最大列-1]

android:layout_row 指定从哪一行开始显示,规则同列数

示例:

若是我只指定android:layout_row="1", column依旧不变. 而且后面的子视图会根据Button2所有改变位置

若是我再指定android:layout_column="0"

若是同时修改成0, 会覆盖第一个子视图.

android:layout_row="0"
        android:layout_column="0"
复制代码

跨度

即控制一个cell应该拥有多大的跨度(范围)

android:layout_columnSpan 整数k,指定元素横跨几列,须要注意保证n+k <= 最大列数

android:layout_rowSpan 纵向跨几行,规则同列

示例:

<Button android:layout_columnSpan="2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" />
复制代码

对齐方式

android:layout_gravity

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_columnSpan="2" android:text="1" />
复制代码

权重

android:layout_columnWeight

android:layout_rowWeight

示例:

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_columnSpan="2" android:text="2" />
复制代码

示例

<GridLayout android:id="@+id/grid" android:layout_width="match_parent" android:layout_height="200dp" android:alignmentMode="alignMargins" android:columnCount="4" android:rowCount="4" >

        <Button android:layout_width="80dp" android:layout_height="50dp" />
        <Button android:layout_width="100dp" android:layout_height="50dp" android:layout_column="2" android:layout_row="1" />
        <Button android:layout_width="80dp" android:layout_height="50dp" />
        <Button android:layout_width="80dp" android:layout_height="50dp" android:layout_column="1" android:layout_row="2" />
        
    </GridLayout>
复制代码

效果图

能够看出来经过子控件使用Column和Row属性能够指定其在网格中的位置

相关文章
相关标签/搜索