android gridlayout点击事件,Android GridLayout

android gridlayout点击事件,Android GridLayout译者注:说实话我确实没用过GridLayout好好认识一下吧!android开发者每天都在问自己一个问题:我到底应该用哪个layout然而GridLayout在当前开发中的情况如下:大多数开发者并不知道这个布局一些开发者知道GridLayout但是因为某些原因没有使用只有少部分开发者花时间了解和积极使用这是我为什么要写这篇文章的原因,因为我觉得这个布局被不公平遗忘了为什么我们需要GridLa…

大家好,又见面了,我是你们的朋友全栈君。

译者注:说实话 我确实没用过GridLayout 好好认识一下吧!

android开发者每天都在问自己一个问题:我到底应该用哪个layout

然而GridLayout在当前开发中的情况如下:

大多数开发者并不知道这个布局

一些开发者知道GridLayout但是因为某些原因没有使用

只有少部分开发者花时间了解和积极使用

这是我为什么要写这篇文章的原因,因为我觉得这个布局被不公平遗忘了

为什么我们需要Grid Layout

GridLayout可以让你用一个简单的根view创建一个表格系统布局

我可以用LinearLayout嵌套来实现

是可以做到,但是你会有性能问题当布局层次太深

我可以用RelativeLayout来创建

也行,但是RelativeLayout有一些限制,例如:

没法同时控制2个轴线对齐

当组件需要的空间超出你预期的时候会跑出屏幕或发生重叠因为你不能使用weight等等

换一句话说就是RelativeLayout不够灵活和响应性不足。

例子

让我们实现一个简单的布局包含一个大图片,2个小图标和跟在图标后面的文本

1*hm-KJs7FJG5qtHglpvWYSQ.png

Preview

RelativeLayout

用RelatieveLayout实现起来非常简单,通过关键属性layout_below,layout_toRightOf和layout_alignTop

1*orH45OZ2t_qeoEfSHzaZtA.png

Code

一眼看上去好像很完美,等你用不同字体size进行布局测试就呵呵了

问题 1 没法同时控制基于2个轴对齐

单行文本应该相对于图标垂直居中,不幸的是RelativeLayout没有提供这个可能性

1*1pxJm-XLyhFHoIzZf65CdQ.png

Preview

问题 2 组件重叠

多行文本会引起重叠,因为text用了layout_alignTop对图标进行对齐

1*uemGANLvCQv-tdfyadqnqA.png

Preview

GridLayout

如你看到的下面图片一样,GridLayout提供更好的表现结果:

文本垂直居中于图标

多行文本不会向下移动组件

1*Dz8SX4ju0NEW4OL6sHeI5g.png

Preview

那么怎么实现这个效果呢?首先定义GridLayout为根布局。然后计算你要多少列并通过android:columnCount属性定义,在我们的例子中我们有2列。

因为GridLayout里面的views是一个接一个被放置的,所以没必要明确定义row和column

如果你想撑开view让它占用2行或2列,你可以用layout_columnSpan/layout_rowSpan属性

还有一件重要的事要记住-如果你想你的view使用所有可用的空间,不要设置width为match_parent,应该设置成0dp同时设置属性layout_gravity=”fill”

1*lSg-UAbQTJkG4pVMM34YaA.png

Code

总结

GridLayout一方面是一个非常强大的工具,它提供了很好的灵活性和性能,另外一方面它需要一些时间来学习了解它如何工作,你通常需要花更多的时间来开发和维护这样的布局。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132091.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • word目录链接无法跳转_怎样跳转网页

    word目录链接无法跳转_怎样跳转网页概述目前使用的next版本是5.1.4,文章左侧的目录一直不能跳转也不能展开,按网上的办法一直没法解决,今天自己琢磨了一阵总算搞定了。由于发现遇到这个问题的人不少,特此总结一下。一般分为

    2022年8月16日
    15
  • cuda编程基础(编程软件有哪些)

    CUDA(ComputeUnifiedDeviceArchitecture),是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

    2022年4月18日
    48
  • 关于Java中两个整数相除,有余数就向上取整的问题

    关于Java中两个整数相除,有余数就向上取整的问题如果是两个整数相除,那么结果的小数点以后的数字会被截断,使运算结果为整数,再进行向上取整会拿不到想要的值。所以如果希望得到运算结果能够保留小数点后面的数,就需要这两个整数至少有一个类型转换为浮点数。比如://这里相减是我代码里复制来的逻辑根据实际情况转型就行了intnumberA=8;intnumberB=2;//将结果转换为floatfloatnumberC=…

    2022年6月21日
    144
  • ELK入门——ELK详细介绍(ELK概念和特点、Elasticsearch/Logstash/beats/kibana安装及使用介绍、插件介绍)

    ELK入门——ELK详细介绍(ELK概念和特点、Elasticsearch/Logstash/beats/kibana安装及使用介绍、插件介绍)主要参考链接ES内容大全(Elastic中国社区官方博客)ES视频教程(Elastic中国社区官方博客)Elastic相关软件和插件(官网)ES中文社区(讨论和提问)我的ELK专栏Linux操作(鸟哥的私房菜)Linux常用命令一、什么是ELK(端口9200)ELK学习总结——我们为什么要用ELK一般我们需要进行日志分析场景:直接在日志文件中grep、awk就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢

    2025年7月23日
    3
  • cxf框架调用webservice_webservice json

    cxf框架调用webservice_webservice json本文主要包括以下内容ant工具的使用利用cxf实现webservicecxf与spring整合ajax访问webserviceant工具1、为什么要用到ant这个工具呢?Ant做为一种工具已经广泛被使用,并且历史悠久。使用ant的内置命令,可以编译java源文件(javac),运行java文件(java),给class文件打包(jar、war、ear),也可以创建(mkdir)、删除…

    2022年9月15日
    2
  • 于Heroku平台部署maven webapp(java web)工程

    于Heroku平台部署maven webapp(java web)工程

    2022年1月14日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号