Android学习之GridLayout

来源:互联网 发布:苏州德威国际学校 知乎 编辑:程序博客网 时间:2024/06/05 13:30

概述

一个将子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>

这里写图片描述

原创粉丝点击