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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ajax怎么解决报414,如何解决HTTP 414“请求URI太长”错误?

    ajax怎么解决报414,如何解决HTTP 414“请求URI太长”错误?根据约翰的回答,我将GET请求更改为POST请求。它可以工作,而无需更改服务器配置。所以我去寻找如何实现这一点。以下页面是有帮助的:带有PHP的jQueryAjaxPOST示例(注意清理发布的数据注释)和http://www.openjs.com/articles/ajax_xmlhttp_using_post.php基本上,区别在于GET请求在一个字符串中包含url和参数,然后发送null…

    2022年5月31日
    40
  • 永久免费内网穿透软件_不限速内网穿透

    永久免费内网穿透软件_不限速内网穿透三种永久免费内网穿透傻瓜式使用教程方法一(使用qydev)方法二(使用飞鸽内网穿透)方法三使用(神卓互联内网穿透)教程方法一(使用qydev)官网:点击访问1、官网页面:找到客户端下载2、找到自己电脑或者运行平台对应的版本(我的是windows64位)3、下载完成后解压到自己熟悉的文件内保存,解压后,暂时不管她,继续第4步4、登录官网后台:新增隧道点击隧道管理–>开通隧道只需要填写这4项:隧道协议选择:http隧道名称: 取一个独一无二的名字

    2022年10月5日
    2
  • pycharm 激活码3月最新在线激活

    pycharm 激活码3月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    39
  • css实现返回顶部,实现返回顶部效果

    css实现返回顶部,实现返回顶部效果实现的效果如下可以点击它返回到首页去html部分title=”返回顶部”>css部分.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:999999;right:50px;bottom:50px;height:50px;list-style:none;}.layui-fixbar.layui-fixba…

    2022年7月13日
    167
  • mysql分页查询limit用法(怎么对文档进行分页)

    一、分页需求:客户端通过传递start(页码),pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limitm,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:比如:查询第1条到第10条的数据的sql是:select*fromtablelimit0,…

    2022年4月11日
    87
  • js 后退刷新[通俗易懂]

    js 后退刷新[通俗易懂]history.back()和history.go(-1)都可以实现返回上一页并不刷新向要页面后退刷新使用:window.location.href=document.referrer;即可实现

    2022年7月25日
    6

发表回复

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

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