转载:http://www.cnblogs.com/skywang12345/p/3154150.html

1 GridLayout简介

GridLayout是Android4.0新提供的网格矩阵形式的布局控件。

GridLayout的继承关系如下:
java.lang.Object
  --> android.view.View
    --> android.view.ViewGroup
      --> android.widget.GridLayout

GridLayout包含的属性如下

android:alignmentMode
属性说明:当设置alignMargins,使视图的外边界之间进行校准。可以取以下值:
alignBounds -- 对齐子视图边界。
alignMargins -- 对齐子视图边距。

android:columnCount
属性说明:GridLayout的最大列数

android:rowCount
属性说明:GridLayout的最大行数

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

android:orientation
属性说明:GridLayout中子元素的布局方向。有以下取值:
horizontal -- 水平布局。
vertical -- 竖直布局。

android:rowOrderPreserved
属性说明: 当设置为true,使行边界显示的顺序和行索引的顺序相同。默认是true。

android:useDefaultMargins
属性说明: 当设置ture,当没有指定视图的布局参数时,告诉GridLayout使用默认的边距。默认值是false。

这些是GridLayout布局本身的属性。


2 GridLayout子元素属性

上面描述的 GridLayout 的属性,是 GridLayout 布局本身的属性;下面 GridLayout 布局中的元素所支持的属性。GridLayout 布局中的元素的属性,定义在 GridLayout.LayoutParams 中。取值如下:

2.1 android:layout_column

属性说明: 显示该空间的列。例如,android:layout_column="0",表示在第1列显示该控件;android:layout_column="1",表示在第2列显示该控件。

layout文件示例,

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:rowCount="2"android:columnCount="3" ><Buttonandroid:id="@+id/one"android:layout_column="1"android:text="1"/><Buttonandroid:id="@+id/two"android:layout_column="0"android:text="2"/><Buttonandroid:id="@+id/three"android:text="3"/><Buttonandroid:id="@+id/devide"android:text="/"/></GridLayout>

对应的显示效果图

layout文件说明
android:orientation="horizontal" -- GridLayout中控件的布局方向是水平布局。
android:rowCount="2"               -- GridLayout最大的行数为2行。
android:columnCount="3"          -- GridLayout最大的列数为3列。
android:layout_column="1"        -- 定义控件one的位于第2列。
android:layout_column="0"        -- 定义该控two件的位于第1列。

2.2 android:layout_columnSpan

属性说明: 该控件所占的列数。例如,android:layout_columnSpan="2",表示该控件占2列。

layout文件示例

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:rowCount="2"android:columnCount="3" ><Buttonandroid:id="@+id/one"android:layout_column="0"android:layout_columnSpan="2"android:text="1"/><Buttonandroid:id="@+id/two"android:text="2"/><Buttonandroid:id="@+id/three"android:text="3"/><Buttonandroid:id="@+id/devide"android:text="/"/></GridLayout>

对应的显示效果图

layout文件说明

数字"1"实际上占据的空间大小是2列,但是第2列显示为空白。若要第2列不显示空白,需要设置 android:layout_gravity属性,参考下例。

2.3 android:layout_row

属性说明: 该控件所在行。例如,android:layout_row="0",表示在第1行显示该控件;android:layout_row="1",表示在第2行显示该控件。它和 android:layout_column类似。

2.4 android:layout_rowSpan

属性说明: 该控件所占的行数。例如,android:layout_rowSpan="2",表示该控件占2行。它和 android:layout_columnSpan类似。

2.5 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)

layout文件示例:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:rowCount="2"android:columnCount="3" ><Buttonandroid:id="@+id/one"android:layout_column="0"android:layout_columnSpan="2"android:layout_gravity="fill"android:text="1"/><Buttonandroid:id="@+id/two"android:text="2"/><Buttonandroid:id="@+id/three"android:text="3"/><Buttonandroid:id="@+id/devide"android:text="/"/></GridLayout>

对应的显示效果图


3 应用示例

定义一个简单的计算器界面,包含“0-9、.、+、-、*、/、=、”。用GridLayout实现。

layout文件

<?xml version="1.0" encoding="utf-8"?>
<!-- GridLayout: 5行 4列 水平布局 -->
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:rowCount="5"android:columnCount="4" ><Buttonandroid:id="@+id/one"android:text="1"/><Buttonandroid:id="@+id/two"android:text="2"/><Buttonandroid:id="@+id/three"android:text="3"/><Buttonandroid:id="@+id/devide"android:text="/"/><Buttonandroid:id="@+id/four"android:text="4"/><Buttonandroid:id="@+id/five"android:text="5"/><Buttonandroid:id="@+id/six"android:text="6"/><Buttonandroid:id="@+id/multiply"android:text="×"/><Buttonandroid:id="@+id/seven"android:text="7"/><Buttonandroid:id="@+id/eight"android:text="8"/><Buttonandroid:id="@+id/nine"android:text="9"/><Buttonandroid:id="@+id/minus"android:text="-"/><Buttonandroid:id="@+id/zero"android:layout_columnSpan="2"android:layout_gravity="fill"android:text="0"/><Buttonandroid:id="@+id/point"android:text="."/><Buttonandroid:id="@+id/plus"android:layout_rowSpan="2"android:layout_gravity="fill"android:text="+"/><Buttonandroid:id="@+id/equal"android:layout_columnSpan="3"android:layout_gravity="fill"android:text="="/>
</GridLayout>

点击下载:源代码

效果图:

转载于:https://www.cnblogs.com/lance-ehf/p/4452493.html

Android 布局之GridLayout(转载)相关推荐

  1. android网格布局间距,Android布局之GridLayout网格布局

    网格布局标签是GridLayout.这个布局是android4.0新增的布局.这个布局只有4.0之后的版本才能使用. 不过新增了一些东东 ①跟LinearLayout(线性布局)一样,他可以设置容器中 ...

  2. Android 布局之GridLayout

    原帖地址:http://www.cnblogs.com/skywang12345/archive/2013/06/25/3154150.html 1 GridLayout简介 GridLayout是A ...

  3. Android布局之GridLayout的使用总结

    文章目录 一.简介 二.常用属性介绍 三.平分问题 四.小米计算器效果 五.动态加载 一.简介 GridLayout是Android4.0引入的网格布局,使用它可以减少布局嵌套. 二.常用属性介绍 G ...

  4. android布局layout,Android布局(FrameLayout、GridLayout)

    1.帧布局(FrameLayout) 帧布局中的每一个组件都代表一个画面,默认以屏幕左上角作为(0,0)坐标,按组件定义的先后顺序依次逐屏显示,后面出现的会覆盖前面的画面.用该布局可以实现动画效果.继 ...

  5. android功能网格布局,Android布局总结一:GridLayout布局(网格布局)

    GridLayout布局简介 GridLayout布局是Android4.0(API Level 14)新引入的网格矩阵形式的布局控件. GridLayout属性介绍 本身属性 android:ali ...

  6. android 布局之RelativeLayout(相对布局)

    android 布局分为LinearLayout TableLayout RelativeLayout FreamLayout AbsoluteLayout. 常用的有LinearLayout,Tab ...

  7. Android布局文件的布局方式

    Android布局文件的属性值解析说明:   1.android:id [为控件指定相应的ID] 2.android:text [指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xm ...

  8. Android布局中 android:layout_gravity=bottom为何不起作用?

    在android布局时我们有时会需要将位于LinearLayout布局中的控件放在布局底部,或者是同时想将几个控件底部对齐,此时我们自然会想到使用 android:layout_gravity=&qu ...

  9. Android布局中的空格以及占一个汉字宽度的空格的实现

    在Android布局中进行使用到空格,以便实现文字的对齐.那么在Android中如何表示一个空格呢? 空格: 窄空格:  一个汉字宽度的空格:   [用两个空格(  )占一个汉字的宽度时,两个空格比一 ...

最新文章

  1. SPOJ375(树链剖分)
  2. 开发js插件之所遇--02[DOM]
  3. golang 反射 获取 设置 结构体 字段值
  4. Java-查看JVM从哪个JAR包中加载指定类
  5. 深度学总结:CNN Decoder, Upsampling的处理
  6. ArcGIS API for JavaScript Bookmarks(书签)
  7. 注册窗口类 registerclass
  8. 廖雪峰讲python高阶函数求导公式_一文读懂Python 高阶函数
  9. Mybatis-SpringBoot集成/配置
  10. Error creating bean with name 解决办法
  11. java02动手动脑
  12. 模拟Post登陆带验证码的网站
  13. Android系统源码目录解析
  14. SparkSQL HiveSQL 常用正则表达式
  15. php怎么画五星红旗,php基于GD库画五星红旗的方法,phpgd库五星红旗_PHP教程
  16. Java与数据结构——树(一)
  17. 我的计算机无法远程连接桌面,远程桌面无法连接怎么办?windows 无法使用远程桌面连接的解决方法...
  18. 一个阿里前端工程师的成长之路
  19. 利用MATLAB免费生成GIF
  20. 信息学奥赛C++编程:苹果和虫子

热门文章

  1. swagger2导出html文档和pdf文档(解决pdf中文乱码与显示不全问题)
  2. centos7下Jenkins管理员admin密码忘记后处理方法
  3. PDA连接远程SQL 2005数据库
  4. 2018微博词云项目深度解析
  5. vim的简单使用及配置
  6. set.contains()分析
  7. 用juniversalchardet解决爬虫乱码问题
  8. iOS在app里面跳转到系统的设置界面
  9. 五大最主流浏览器综合性能测试
  10. 追捕美国头号电脑通缉犯