Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >新推出的GridLayout网格布局

新推出的GridLayout网格布局

作者头像
分享达人秀
发布于 2018-02-02 09:46:23
发布于 2018-02-02 09:46:23
1.5K00
代码可运行
举报
文章被收录于专栏:分享达人秀分享达人秀
运行总次数:0
代码可运行

本期主要学习的是网格布局是Android 4.0新增的布局,和前面所学的TableLayout表格布局 有点类似,不过他有很多前者没有的东西,也更加好用。

一、认识GridLayout

网格布局实现了控件的交错显示,能够避免因布局嵌套对设备性能的影响,更利于自由布局的开发。网格布局用一组无限细的直线将绘图区域分成行、列和单元,并指定控件的显示区域和控件在该区域的显示方式

下表显示了 GridLayout常用的XML属性及相关方法说明。

XML属性

相关方法

说明

android:alignmentMode

SetAlignmentMode(int)

设置该布局管理器采用的对齐模式

android:columnCount

setColumnCount(int)

设置该网格的列数量

android:columnOrderPreserved

setColumnOrderPreserved(boolean)

设置该网格容器知否保留列序号

android:rowCount

setRowCount(int)

设置该网格的行数量

android:rowOrderPreserved

setRowOrderPreserved(boolean)

设置该网格容器是否保留行序号

android:useDefaultMardins

setUseDefaultMardins(boolean)

设置该布局管理器是否使用默认的页边距

为了控制GridLayout布局容器中各子组件的布局分布,GridLayout提供了一个内部类: GridLayout.LayoutParams,该类提供了大量的XML属性来控制GridLayout布局容器中子组件的布局分布。

下表显示了 GridLayout.LayoutParams常用的XML属性及相关方法。

XML属性

相关方法

说明

android:layout_column

设置该子组件在GridLayout的第几列

android:layout_columnSpan

设置该子组件在GridLayout横向跨几列

android:layout_gravity

setGravity(int)

设置该子组件采用何种方式占据该网格的空间

android:layout_row

设置该子组件在GridLayout的第几行

android:layout_rowSpan

设置该子组件在GridLayout纵向上跨几行

二、示例

接下来通过一个简单的示例程序来学习GridLayout的使用用法。

同样使用WidgetSample工程,继续使用app/main/res/layout/目录下的activity_main.xml文件,在其中填充如下代码片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:columnCount="4"
            android:rowCount="7">

    <TextView
        android:id="@+id/result_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_columnSpan="4"
        android:background="#eee"
        android:text="0"
        android:textColor="#000"
        android:textSize="50sp" />

    <Button
        android:id="@+id/clear_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_columnSpan="4"
        android:text="Clear" />
    <Button
        android:id="@+id/one_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="1" />
    <Button
        android:id="@+id/two_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="2" />
    <Button
        android:id="@+id/three_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="3" />
    <Button
        android:id="@+id/devide_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="/" />
    <Button
        android:id="@+id/four_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="4" />
    <Button
        android:id="@+id/five_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="5" />
    <Button
        android:id="@+id/six_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="6" />
    <Button
        android:id="@+id/multiply_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="×" />
    <Button
        android:id="@+id/seven_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="7" />
    <Button
        android:id="@+id/eight_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="8" />
    <Button
        android:id="@+id/nine_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="9" />
    <Button
        android:id="@+id/minus_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="-" />
    <Button
        android:id="@+id/zero_btn"
        android:layout_columnSpan="2"
        android:layout_columnWeight="1"
        android:layout_gravity="fill"
        android:layout_rowWeight="1"
        android:text="0" />
    <Button
        android:id="@+id/point_btn"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="." />
    <Button
        android:id="@+id/plus_btn"
        android:layout_columnWeight="1"
        android:layout_rowSpan="2"
        android:layout_rowWeight="1"
        android:text="+" />
    <Button
        android:id="@+id/equal_btn"
        android:layout_columnSpan="3"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:text="=" />
</GridLayout>

运行程序,可以看到下图所示界面效果:

到此,关于Android中的六种界面布局已经学习完毕,你都掌握了吗?一定要多动手练习哦,从下期开始一起来学习Android事件处理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 分享达人秀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
浅谈GridLayout(网格布局)
Android 4.0 布局-->GridLayout 网格布局 以行列单元格的形式展示内部控件排列,可以实现类似计算机键盘效果 ,也可以实现可自动变行的标签群效果 使用GridLayout ,有效减少了布局的深度,渲染速度也是很快的 类似于LinearLayout 的使用,额外添加了一些特有的属性 先来看下GridLayout的一些属性介绍 1、 android:orientation="horizontal|vertical" 内部控件是水平排列的还是竖直排列的    与LinearLayout使用方法
听着music睡
2018/05/18
1.5K0
Android精通:TableLayout布局,GridLayout网格布局,FrameLayout帧布局,AbsoluteLayout绝对布局,RelativeLayout相对布局
TableLayout是将子类向分别排列成行和列的布局视图容器,TableLayout是由许多TableRow对象组成的,表格布局以行列的形式管理子控件,每一个单元是一个TableRow或者View对象。
达达前端
2019/07/03
4.2K0
Android精通:TableLayout布局,GridLayout网格布局,FrameLayout帧布局,AbsoluteLayout绝对布局,RelativeLayout相对布局
Android 六大布局之 GridLayout(网格布局)「建议收藏」
1、GridLayout 布局是 Android 4.0 以后引入的新布局,和 TableLayout(表格布局) 有点类似,不过它功能更多,也更加好用
全栈程序员站长
2022/08/23
8.4K0
Android 六大布局之 GridLayout(网格布局)「建议收藏」
跟我学Android之六 布局
相对布局是一种通过设置相对位置进行的布局,相对布局使用<RelativeLayout>标签进行配置,对应代码中的类是android.widget.RelativeLayout,布局中的视图通过设置相互间的相对位置进行排列,相对的排列位置,相对的对齐方式;相对布局使用拖放式比较方便。
张哥编程
2024/12/17
1740
跟我学Android之六  布局
A019-布局之GridLayout
网格布局,是Android4.0之后的API才提供的,算是一个相对新的布局容器,它的用法也很简单,类似LinearLayout可以指定方向,也可以指定控件占用多少行或列的空间。
巫山老妖
2018/07/23
4820
A019-布局之GridLayout
gridlayout布局
android layout button encoding 框架 编程
全栈程序员站长
2022/09/05
5890
Android 4.0开发之GridLayOut布局实践
在上一篇教程中http://blog.csdn.net/dawanganban/article/details/9952379,我们初步学习了解了GridLayout的布局基本知识,通过学习知道,GridLayout可以用来做一个象TableLayout这样的布局样式,但其性能及功能都要比tablelayout要好,比如GridLayout的布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快。在本文中,将指导读者进一步加深对GridLayout的认识,带大家实做一个简单的数字键盘布局,从中体会GridLayout的用法。
全栈程序员站长
2022/09/02
4140
Android布局详解
Android基本布局分别是:线性布局LinearLayout、相对布局RelativeLayout、帧布局FrameLayout、表格布局TableLayout、网格布局GridLayout。
全栈程序员站长
2022/09/05
1.6K0
《Monkey Android》第8课FrameLayout、GridLayout
注意: 如果要达到网格的效果,推荐使用LinearLayout来实现,因为使用GridLayout会产生如下问题:
GitOPEN
2019/01/29
4320
《Monkey Android》第8课FrameLayout、GridLayout
GridLayout 使用总结「建议收藏」
GridLayout是Android4.0引入的网格布局,使用它可以减少布局嵌套。也算是常用,但一直没仔细看过,今天研究一下
全栈程序员站长
2022/07/02
2K0
GridLayout 使用总结「建议收藏」
1.[Andriod]之Andriod布局 VS WinPhone布局
0.写在前面的话 近来被HTML+CSS的布局折腾的死去活来,眼巴巴的看着CSS3中的flex,grid等更便捷更高效的的布局方式无法在项目中应用,心里那叫一个窝火啊,去你妹的兼容性,,, 最近体验下Android开发,第一件事就是翻翻看安卓提供的布局方式方便不,因为笔者现在是做WP的,于是乎有了这篇比较两个平台提供的一些基础的布局方式的博文。 另外,安装完Android Studio后,在Android的SDK的目录下有一个docs的文件夹,这里面提供的有离线的官方文档。 Android应用在当前元素上的
blackheart
2018/01/19
1.3K0
1.[Andriod]之Andriod布局 VS WinPhone布局
Android六大布局
Android六大布局 LinearLayout(线性布局) 常用属性 FrameLayout(帧布局) 常用属性 RelativeLayout(相对布局) 常用属性 AbsoluteLayout(绝对布局) 常用属性 TableLayout(表格布局) 常用属性 GridLayout(网格布局) 常用属性 TableLayout 和 GridLayout的区别 gravity和layout_gravity的区别 为什么 XML 资源文件要从文本格式编译成二进制格式 Android 资源管理框架又是如何快速
是阿超
2022/11/02
2.7K0
Android六大布局
【鼠】安卓学习杂记(九)——Android网格布局GridLayout
1、设置布局中组件的排列方式:android:orientation="此处填写horizontal(默认)或者vertical"
訾博ZiBo
2025/01/06
1090
六大布局之非常用布局
Hi,大家好,新的一周开始啦,让我们继续遨游在Android的知识海洋中吧!上一次我们讲到了RelativeLayout,相信不少小伙伴已经着手实战,那么今天我们为大家带来六大布局中剩下的三个布局。本篇文章可以和前面的FrameLayout一同归类到Android非常用布局之中,虽然不常用,但是小伙伴们也要知道它的一些基础属性哦~
下码看花
2019/09/02
1.7K0
六大布局之非常用布局
从零开始学android编程之网格布局管理器(2-1)
网格布局管理器用GridLayout类来表示。在《从零开始学android编程之表格布局管理器》中提到的TableLayout一般产生的表格外形是标准的方框,而GridLayout类产生的网格可以是不标准的。
全栈程序员站长
2022/08/23
3760
从零开始学android编程之网格布局管理器(2-1)
Android Notes|细数「八大布局」那些事儿
做 Android 好几年了,从单纯的 Android,到现在大杂烩,这个滋味儿,真的是百感交汇。
贺biubiu
2020/11/25
1.9K0
Android Notes|细数「八大布局」那些事儿
Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件
对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的。View是绘制在屏幕上能与用户进行交互的一个对象。而对于ViewGroup来说,则是一个用于存放其他View和ViewGroup对象的布局容器!
达达前端
2019/07/03
1.9K0
Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件
IDEA GridLayout
其中注意GridLayout的声明成MainActivity的成员,不能在成员函数内声明(我在这检查了半天),还有xml中第二个TextView的android:layout_columnSpan=”4”不能省略,不然下面的“LLL”就只有一列。
全栈程序员站长
2022/07/01
3630
IDEA GridLayout
android gridlayout点击事件,Android GridLayout
当组件需要的空间超出你预期的时候会跑出屏幕或发生重叠因为你不能使用weight等等
全栈程序员站长
2022/08/12
1.1K0
android gridlayout点击事件,Android GridLayout
Android开发学习笔记(八)网络布局GridLayout
网络布局 android:rowCount=“6” android:columnCount="4"指定6行4列的网络 android:layout_columnSpan="4"合并4列单元格
zstar
2022/06/14
3530
Android开发学习笔记(八)网络布局GridLayout
推荐阅读
相关推荐
浅谈GridLayout(网格布局)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验