最近在阅读一份开源代码时,发现有一个页面中并不是明显的网格样式,但layout里的根控件用的是GridLayout,才发现原来它是可以这样用的,原来不一定拘泥于页面布局是明显的网格形式,而是需要我们来把明显不是网格样式的布局来当成网格看待。–这里大家可能不一定立马理解,不急,先继续看看后面的内容。

因为RelativeLayout和加了weight的Linearlayout都存的onMeasure两次的坑,如果子布局很复杂的情况下,,对界面的绘制性能会产生很大的影响,,直接的影响就是inflate方法耗时明显。这个问题困扰了很久,一直没有一个完美的解决办法,直到发现GridLayout可以一定程度上替代它们。
GridLayout有三个优点:
1)不存在measure多次的问题
2)能像RelativeLayout一样解决嵌套过深的问题
3)能够较简单的保证控件之间的对齐
我碰到有些四五层深度的布局,改用GridLayout后,子控件一层即解决,跟RelativeLayout一样,这就是为什么给它加上‘华丽丽’的原因。


下面以一个实例来验证,并提供使用参考:

先看这样一张图,我将会用GridLayout做为根控件嵌套一层来实现这种布局:

实现代码:

<?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:background="#ffffff"android:columnCount="5"android:orientation="horizontal"><includelayout="@layout/titlebar"android:layout_width="match_parent"android:layout_height="@dimen/d_k2_title_h_96px"android:layout_columnSpan="5"/><Viewandroid:layout_height="10dp"android:layout_columnSpan="5"android:background="#f3f3f3"/><ImageViewandroid:id="@+id/logo_image"android:layout_width="55dp"android:layout_height="55dp"android:layout_centerVertical="true"android:contentDescription="@string/app_name"android:padding="10dp"/><TextViewandroid:id="@+id/name_text"android:layout_columnSpan="2"android:layout_gravity="fill"android:maxLength="20"android:gravity="center_vertical"android:text="Email:"android:textColor="@color/textcolor_default"android:textSize="@dimen/textsize_30px"/><TextViewandroid:layout_gravity="center_vertical|fill"android:clickable="true"android:layout_columnSpan="2"android:drawablePadding="5dp"android:drawableRight="@drawable/icon_arrow_right"android:gravity="center_vertical|right"android:onClick="bindClk"android:padding="10dp"android:text="change"android:textColor="@color/textcolor_focus"android:textSize="@dimen/textsize_28px"/><Viewandroid:layout_height="10dp"android:layout_columnSpan="5"android:background="#f3f3f3"/><TextViewandroid:layout_width="65dp"android:layout_height="45dp"android:gravity="center"android:text="Email:"android:textColor="#333333"android:textSize="@dimen/textsize_24px"/><Buttonandroid:layout_width="50dp"android:layout_height="25dp"android:layout_gravity="center_vertical"android:background="@drawable/shape_stoke_ff6c00"android:text="Email:"android:textColor="@color/textcolor_focus"android:textSize="@dimen/textsize_28px"/><EditTextandroid:layout_columnSpan="3"android:layout_gravity="fill"android:background="@null"android:digits="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLIMNOPQRSTUVWXYZ"android:gravity="center_vertical"android:hint="Email:"android:maxLength="5"android:textColor="@color/textcolor_main"android:textSize="@dimen/textsize_28px"/><Viewandroid:layout_height="10dp"android:layout_columnSpan="5"android:background="#f3f3f3"/><TextViewandroid:layout_width="65dp"android:layout_height="45dp"android:gravity="center"android:text="Email:"android:textColor="#333333"android:textSize="@dimen/textsize_24px"/><ImageViewandroid:layout_width="22dp"android:layout_height="22dp"android:layout_gravity="center_vertical"android:onClick="onWenHaoClk"android:src="@drawable/car_ques"/><EditTextandroid:layout_columnSpan="3"android:layout_gravity="fill"android:background="@null"android:digits="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLIMNOPQRSTUVWXYZ"android:gravity="center_vertical"android:hint="Email:"android:maxLength="6"android:textColor="@color/textcolor_main"android:textSize="@dimen/textsize_28px"/><Viewandroid:layout_height="10dp"android:layout_columnSpan="5"android:background="#f3f3f3"/><TextViewandroid:layout_width="62.5dp"android:layout_height="45dp"android:gravity="center"android:text="Email:"android:textColor="#333333"android:textSize="@dimen/textsize_24px"/><ImageViewandroid:layout_width="22dp"android:layout_height="22dp"android:layout_gravity="center_vertical"android:src="@drawable/car_ques"/><EditTextandroid:layout_gravity="fill"android:layout_columnSpan="3"android:layout_marginRight="@dimen/margin_edge"android:background="@null"android:digits="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLIMNOPQRSTUVWXYZ"android:gravity="center_vertical"android:hint="Email:"android:maxLength="6"android:textColor="@color/textcolor_main"android:textSize="@dimen/textsize_28px"/><Viewandroid:layout_height="10dp"android:layout_columnSpan="5"android:background="#f3f3f3"/><TextViewandroid:layout_width="62.5dp"android:layout_height="45dp"android:gravity="center"android:text="Email:"android:textColor="#333333"android:textSize="@dimen/textsize_24px"/><TextViewandroid:layout_columnSpan="2"android:layout_marginLeft="@dimen/margin_edge"android:layout_gravity="fill"android:paddingRight="10dp"android:background="@null"android:clickable="true"android:drawableRight="@drawable/carset_corner"android:gravity="center_vertical"android:hint="Email:"android:textColor="@color/textcolor_main"android:textSize="@dimen/textsize_28px"/><TextViewandroid:layout_columnSpan="2"android:layout_marginRight="@dimen/margin_edge"android:background="@null"android:clickable="true"android:gravity="center_vertical"android:hint="Email:"android:textColor="@color/textcolor_main"android:textSize="@dimen/textsize_28px"android:visibility="visible"/><TextViewandroid:layout_width="62.5dp"android:layout_height="45dp"android:gravity="center"android:text="Email:"android:textColor="#333333"android:textSize="@dimen/textsize_24px"/><TextViewandroid:layout_columnSpan="4"android:layout_gravity="fill"android:layout_marginLeft="@dimen/margin_edge"android:layout_marginRight="@dimen/margin_edge"android:layout_weight="1"android:background="@null"android:clickable="true"android:gravity="center_vertical"android:hint="Email:"android:textColor="@color/textcolor_main"android:textSize="@dimen/textsize_28px"/><TextViewandroid:layout_width="62.5dp"android:layout_height="45dp"android:gravity="center"android:text="Email:"android:textColor="#333333"android:textSize="@dimen/textsize_24px"/><TextViewandroid:layout_columnSpan="4"android:layout_gravity="fill"android:layout_marginLeft="10dp"android:background="@null"android:clickable="true"android:gravity="center_vertical"android:hint="Email:"android:layout_marginRight="30dp"android:drawableRight="@drawable/carset_corner"android:textColor="@color/textcolor_main"android:textSize="@dimen/textsize_28px"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_columnSpan="5"android:layout_marginLeft="@dimen/margin_edge"android:layout_marginTop="@dimen/margin_edge"android:drawableLeft="@drawable/bulb"android:gravity="center_vertical"android:text="Email:"android:textColor="#666666"android:textSize="@dimen/textsize_24px"/><Buttonandroid:layout_width="match_parent"android:layout_height="45dp"android:layout_columnSpan="5"android:layout_gravity="bottom"android:background="@color/color_main"android:gravity="center"android:onClick="saveClk"android:text="save"android:textColor="#ffffff"android:textSize="@dimen/textsize_30px"/>
</GridLayout>

再上一张显示布局边界的图让大家理解我的布局思路:

这里有个技巧,如果你开发中碰到类似问题可以留意下:
虽然这里横向上可以明显看成是三个控件,也就是可能会分成三列,但是为了对齐和布局方便,拆分更多列可以更好的控制布局显示达到需要的效果。
比如下面这个:

GridLayout本身很简单,但还是要学会灵活使用它。

华丽丽的GridLayout-使用案例相关推荐

  1. 处女座5月份华丽丽的碉堡了!哈哈哈~献给处处们~共勉共勉!

    苏珊米勒2012年5月处女座运势 你正步入非常开心的时期,尽管过去几个月可能一直有些困难,特别是在财务方面,但你会发现5月帮你做出些转运的改变.随着时间的推进,到了10月初,你就将处于一个全新的位置了 ...

  2. 华丽丽的支付宝“圈子”,亮瞎了陌陌的眼

    华丽丽的支付宝"圈子",亮瞎了陌陌的眼(转) 文/小刀马 周末的朋友圈被支付宝很快刷了屏,各种"支付鸨"的调侃,图片,文章呼啸而来,大有一发不可收拾的趋势,支付 ...

  3. 几款简约而且华丽丽的桌面应用

    昨天还刚刚在抱怨没有好的桌面应用,后来就发现了一些很不错的东西. 听我一一道来..... 1.Fences 官网:http://www.stardock.com/products/fences/ wi ...

  4. 经典网页设计:25个华丽的 CSS 网站作品案例

    CSS 是网页设计师和网页开发人员最喜欢的技术之一,因为它有大量新特性.新元素和新技术.创建一个基本的布局可能并不需要很多的时间或精力.但是,如果你想让您的设计脱颖而出,那么就真的需要花费一番功夫.今 ...

  5. 活动丨4场直播华丽丽来袭,快来参与

    1. [推荐]聚数·智赢未来--云和恩墨2020年夏季产品发布会(2020-06-10) 云和恩墨作为数据资产端到端的解决方案提供商,多年来围绕数据提供安全.统一.连续.高效的产品和服务.本次2020 ...

  6. 3.21 华丽丽的颜色渐变工具 [原创Ps教程]

    原文:http://coolketang.com/staticPhotoshop/5a98d38417d009003595e98f.html 1. 本节课程将为您演示如何使用[颜色渐变工具].首先点击 ...

  7. 华丽丽的旋转彩带效果

    让我们继续使用粒子动画效果来创造异想天开的例子吧.这次,粒子在行进中旋转着组成一系列的线段.在前一个片段和新的片段的位置之间绘制许多小矩形,这样就可以产生彩带旋转行径的效果.点击下面的图片可以查看效果 ...

  8. 【原创开源应用第1期】花式玩转网络摄像头之TCP上位机软件实现,高端大气上档次,速度2MB/S,华丽丽的界面效果

    说明: 1.例子是两年前做的,一直没有顾上整理出来,今天特地整理出来,开源出来给大家玩. 2.上位机是emWin模拟器开发的,大家估计很难猜到,所以你会emWin话的,就可以轻松制作上位机.做些通信和 ...

  9. 20个华丽丽的导航设计PSD下载

    在2012年涌现了许多有视觉吸引和创造性的导航,她们不仅身段妙曼富有美感,而且传承了整个网站的导航指引,让浏览者轻松愉悦的访问网站.她们会温馨的提醒你在哪儿,还会体贴的带你获取到想要的东西.别等了,现 ...

最新文章

  1. Javascript学习笔记2——函数
  2. Tomcat网页加载速度过慢的解决方法
  3. WIN10 OpenGL GLFW+GLAD 开发环境搭建
  4. PyQt4编程之自定义插槽
  5. Spring Cloud Security:Oauth2实现单点登录
  6. 【代码规范】常见命名规范
  7. 转:使用 Tkprof 分析 ORACLE 跟踪文件
  8. js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)
  9. oppo怎么广告接入_OPPO游戏创游无境 构建强大的游戏生态
  10. Android Hook框架adbi的分析(3)---编译和inline Hook实践
  11. 海康VisionMaster-脚本模块
  12. RC串联延时电路电容充电时间计算
  13. MATLAB遗传算法调试
  14. 忽悠马云10亿,还阿里4500亿:做对事赢一场,跟对人赢一生!
  15. lighttpd 记录
  16. 对SPEA算法的一些总结
  17. Ajax----跨域请求
  18. xp系统为何无法登陆服务器,xp系统怎么登陆云服务器
  19. 独家:沪上三大律师解读“三驾马车”下的数据合规与上海数商体系创新​
  20. Windows——就近共享

热门文章

  1. clistctrl控件最后插入在后面_用图表控件做一个简单的员工信息查询系统
  2. HALCON双目三维重建实验
  3. opencv打开raw格式图像
  4. 电脑编程教学_“人工智能”将无处不在,我的孩子要不要学习电脑编程?
  5. 第28讲 | 弄懂数字货币交易平台(二)
  6. WebApi与Mvc的区别
  7. 源码之HashMap
  8. openlayers 根据style设置显示级别并在字体加背景框
  9. C#: IntelliSense 貌似做错了一些事情。
  10. 读取资源文件的工具.