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)
上一篇 2022年4月30日 下午3:00
下一篇 2022年4月30日 下午3:00


相关推荐

  • 基于 Claude Code 与 BrowserCat MCP 的浏览器自动化全链路构建实践

    基于 Claude Code 与 BrowserCat MCP 的浏览器自动化全链路构建实践

    2026年3月15日
    2
  • python 请在微信客户端打开_(未解决)jmeter报错之“请在微信客户端打开链接”

    python 请在微信客户端打开_(未解决)jmeter报错之“请在微信客户端打开链接”这是一个还没解决的问题,这里纯粹记录自己思考的过程,后续给自己参考。先说明情景:对微信公众号的一个接口进行调用跑通,后续可能需要压测(是的,仅仅是调通一个接口而已o(╥﹏╥)o)1、按照我理解的正常套路,我直接请求对应的接口,然后通过抓包得到Cookie,写入到HTTPCookie管理器中,如下:emmmm….开始百度,发现也有类似的提问,但是没有一个靠谱有效的答案。然后我就去分析登录过程了…

    2022年5月2日
    50
  • Manus在线登录入口无法访问?

    Manus在线登录入口无法访问?

    2026年3月15日
    2
  • vue详解_vuex getters

    vue详解_vuex gettersVuex是做什么的?官方解释:Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex

    2022年7月31日
    11
  • 敏感文件/目录扫描工具 dirsearch「建议收藏」

    敏感文件/目录扫描工具 dirsearch「建议收藏」目录1、dirsearch是什么?2、dirsearch的下载和安装3、在dirsearch.py所在目录,输入cmd,进入命令行4、dirsearch的参数5、实战6、查看响应码为200的目录1、dirsearch是什么?dirsearch是一个python开发的目录扫描工具。和我们平时使用的御剑之类的工具一样,就是为了扫描网站的敏感文件和目录从而找到突破口。2、dirsearch的下载和安装下载地址:http://链接:https:…

    2022年10月5日
    4
  • 改变QLabel背景颜色

    改变QLabel背景颜色在桌面应用程序开发时,需要显示一些状态信息,例如客户端是否掉线,串口是否打开等,我们可以用一些标志显示给用户,例如如果QLabel显示绿色,表示连接成功,显示黑色表示失败。代码如下:ui.label_Status->clear(); QPalettepalette; palette.setColor(QPalette::Background,Q…

    2022年6月20日
    365

发表回复

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

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