Android学习之GridLayout

概述

一个将子view置于矩形网格的布局
网格有一组无限细线组成,将可视区域分为单元格。
子view占据一个或者多个连续的单元格,它们由rowSpec和columnSpec布局参数定义。
虽然单元格在GridLayout中通常不会重叠,但是GridLayout并不会阻止被定义的子元素占用相同的单元格或单元格组,所以在这种操作下,子view很可能重叠。
如果一个子View没有指定希望占据的单元格行和列,GridLayout会自动分配:使用的属性:
orientation,rowCount,columnCount
空间
子view之间的空间可以由使用专用的实例来指定Space视图或者通过设置LeftMargin,topMargin,rightMargin和bottomMargin。当设置useDefaultMargins属性的时候,将根据平台的主要UI风格自动分配子View周围的默认边距。

XML属性

行和列规范的对齐属性一起指定了单元格组中对齐的两个方面。也可以通过使用该setGravity(int) 方法在其单元组中指定子对齐。
重量属性也包含在Spec中,并指定了由于关联视图而导致的任何多余空间的比例。

android:alignmentMode:
取值:
alignBounds:对齐子视图边界
alignMargins:对齐子视图边距

android:columnCount: 最大列数

android:rowCount:最大行数

android:columnOrderPreserved:
当设置为true,使列边界显示的顺序和列索引的顺序相同,默认true

android:orientation:
子元素的布局方向
取值:
horizontal:水平
vertical:垂直

android:rowOrderPreserved:
当设置为true,使行边界显示的顺序和列索引的顺序相同,默认true

android:useDefaultMargins:
当设置为true,而且没有指定视图的布局参数的时候,告诉GirdLayout使用默认的边距。默认值是false

这些是GirdLayout布局本身的属性


下面是GridLayout布局中国元素所支持的属性,定义在GridLayout.LayoutParams中
android:layout_column:显示该空间的列
例如,android:layout_column=”0”,表示在第1列显示该控件;android:layout_column=”1”,表示在第2列显示该控件。

android:layout_columnSpan:
该空间所占的列数
例如,android:layout_columnSpan=”2”,表示该控件占2列。如果要不显示空白,需要设置android:layout_gravity属性

android:layout_columnWeight:
设施权重,在空间分配过剩的时候,给视图分配水平空间的相对比例。

android:layout_row和android:layout_rowSpan和android:layout_rowWeight跟上面差不多

android:layout_gravity:
该控件的布局方式。可以取以下值:
top – 控件置于容器顶部,不改变控件的大小。
bottom – 控件置于容器底部,不改变控件的大小。
left – 控件置于容器左边,不改变控件的大小。
right – 控件置于容器右边,不改变控件的大小。
center_vertical – 控件置于容器竖直方向中间,不改变控件的大小。
fill_vertical – 如果需要,则往竖直方向延伸该控件。
center_horizontal – 控件置于容器水平方向中间,不改变控件的大小。
fill_horizontal – 如果需要,则往水平方向延伸该控件。
center – 控件置于容器中间,不改变控件的大小。
fill – 如果需要,则往水平、竖直方向延伸该控件。
clip_vertical – 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。
clip_horizontal – 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是 right的,则剪切该控件的左边。
start – 控件置于容器的起始处,不改变控件的大小。
end – 控件置于容器的结束处,不改变控件的大小。

对应函数: setGravity(int)

应用实例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="vivian.com.calculator.MainActivity"
    android:background="#e5e5e5e5"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        >
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/biaodashi"
            android:textSize="24sp"

            />
    </LinearLayout>

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:columnCount="4"
        android:orientation="horizontal"
        android:rowCount="5"
        >

        <Button
            android:id="@+id/qingchu"
            android:text="C"
            android:textSize="20sp"
            android:textColor="#FFF"
            android:background="#91919191"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"

            />
        <Button
            android:id="@+id/chu"
            android:text="÷"
            android:textSize="20sp"
            android:textColor="#FFF"
            android:background="#91919191"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"

            />
        <Button
            android:id="@+id/cheng"
            android:text="X"
            android:textSize="20sp"
            android:textColor="#FFF"
            android:background="#91919191"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"
            />

        <Button
            android:id="@+id/shanchu"
            android:text="BACK"
            android:textSize="20sp"
            android:textColor="#FFF"
            android:background="#91919191"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"
            />

        <Button
            android:id="@+id/qi"
            android:text="7"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/ba"
            android:text="8"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/jiu"
            android:text="9"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/jia"
            android:text="+"
            android:textSize="20sp"
            android:textColor="#fff"
            android:background="#91919191"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/si"
            android:text="4"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/wu"
            android:text="5"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/liu"
            android:text="6"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/jian"
            android:text="-"
            android:textSize="20sp"
            android:textColor="#fff"
            android:background="#91919191"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/yi"
            android:text="1"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/er"
            android:text="2"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/san"
            android:text="3"
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/zuokuohao"
            android:text="("
            android:textSize="20sp"
            android:textColor="#fff"
            android:background="#91919191"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/ling"
            android:text="0"
            android:layout_columnSpan="2"
            android:layout_rowWeight="1"
            android:textSize="20sp"
            android:layout_gravity="fill"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/dian"
            android:text="."
            android:textSize="20sp"
            android:layout_rowWeight="1"
            android:background="#ebebeb"
            android:layout_margin="2.5dp"
            />

        <Button
            android:id="@+id/youkuohao"
            android:text=")"
            android:textSize="20sp"
            android:textColor="#fff"
            android:background="#91919191"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"
            />
        <Button
            android:id="@+id/dengyu"
            android:text="="
            android:textSize="20sp"
            android:textColor="#fff"
            android:background="#ee9a00"
            android:layout_rowWeight="1"
            android:layout_margin="2.5dp"
            android:layout_columnSpan="4"
            android:layout_gravity="fill"
            />


    </GridLayout>


</LinearLayout>

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值