讨论一下 Constraintlayout 如何优雅的实现复杂一点的布局

2020-12-19 15:23:09 +08:00
 Nuttertoo1s
比如这种

我的想法是先拉一个 Constraintlayout1,然后用百分比辅助线分好区域,然后再往每个区域里填一个 Constraintlayout2,之后就可以在 Constraintlayout2 填入 ImageView 和 TextView,不知道还有没有什么优雅的方式可以让 2 个辅助线之间的内容变成一个整体,就是可以设置点击事件的那种
这是大概的结构图

引到主布局之后的样子
10018 次点击
所在节点    Android
12 条回复
ohhhh
2020-12-19 15:47:18 +08:00
把图片和文字写成一个自定义 view 就好了
Nuttertoo1s
2020-12-19 15:52:35 +08:00
@ohhhh 上一版就是自定义 view 来解决的,这次换成 Constraintlayout 布局想看看还有没有其他好的方法
ohhhh
2020-12-19 15:55:54 +08:00
蹲一个 说不定有
ohhhh
2020-12-19 16:03:05 +08:00
@Nuttertoo1s 看了一下 应该还是需要自定义 view 去解决这个事情,Constraintlayout 主要用来解决布局的嵌套
mxalbert1996
2020-12-19 19:37:22 +08:00
你这个用 LinearLayout 很容易实现啊,而且我也不是很懂为什么要自定义 View 。我的建议是除非用其他 Layout 实现不了或者嵌套层级太多,否则不要用 ConstraintLayout,因为 ConstraintLayout 虽然功能强大,但性能也比其他的差得多。
Nuttertoo1s
2020-12-19 19:43:55 +08:00
@mxalbert1996 为了强迫自己学习新技术
Nuttertoo1s
2020-12-19 19:49:05 +08:00
@mxalbert1996 我感觉以后图形化界面绘制布局应该是主流,现在 4.1 版本的已经很方便了
tpkxywxd
2020-12-20 08:38:00 +08:00
john6lq
2020-12-20 12:48:02 +08:00
你是不是不知道有个东西叫 drawableStart
lonnyzhang
2020-12-21 09:16:28 +08:00
用 Group 关联两个 view,运行时拿到 referenceIds 遍历设置 click 事件

https://stackoverflow.com/questions/46743944/use-group-in-constraintlayout-to-listen-for-click-events-on-multiple-views
chenjiajia9411
2020-12-21 09:42:37 +08:00
怎么还有人觉得约束布局性能差的,嵌套和过度绘制才是界面绘制缓慢的根本原因,一举解决这两个问题的约束布局为什么会比千层饼线性布局或者相对布局慢我倒也是不懂。
如果说的是在 RecyclerView 里的情况的话(估计又是[那篇文章]( https://juejin.cn/post/6844903685655363598)误导的),我就不懂了两年前的玩意儿怎么现在还能拿出来说的(里面甚至有一个例子是 ListView 在 API 18 上面跑的,我也是醉了),ConstraintLayout 稳定版都 2.0.4 了,如果你还在用 support 库那真是打扰了。
楼主的问题的话,楼上有人说的 drawableStart (在低版本上还要设置 drawableLeft )就可以解决了。
wuliaoshixia
2020-12-22 17:15:40 +08:00
@lonnyzhang 正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737050

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX