V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Nuttertoo1s
V2EX  ›  Android

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

  •  
  •   Nuttertoo1s · 2020-12-19 15:23:09 +08:00 · 9504 次点击
    这是一个创建于 1438 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如这种

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

    引到主布局之后的样子
    12 条回复    2020-12-22 17:15:40 +08:00
    ohhhh
        1
    ohhhh  
       2020-12-19 15:47:18 +08:00
    把图片和文字写成一个自定义 view 就好了
    Nuttertoo1s
        2
    Nuttertoo1s  
    OP
       2020-12-19 15:52:35 +08:00
    @ohhhh 上一版就是自定义 view 来解决的,这次换成 Constraintlayout 布局想看看还有没有其他好的方法
    ohhhh
        3
    ohhhh  
       2020-12-19 15:55:54 +08:00
    蹲一个 说不定有
    ohhhh
        4
    ohhhh  
       2020-12-19 16:03:05 +08:00
    @Nuttertoo1s 看了一下 应该还是需要自定义 view 去解决这个事情,Constraintlayout 主要用来解决布局的嵌套
    mxalbert1996
        5
    mxalbert1996  
       2020-12-19 19:37:22 +08:00 via Android   ❤️ 1
    你这个用 LinearLayout 很容易实现啊,而且我也不是很懂为什么要自定义 View 。我的建议是除非用其他 Layout 实现不了或者嵌套层级太多,否则不要用 ConstraintLayout,因为 ConstraintLayout 虽然功能强大,但性能也比其他的差得多。
    Nuttertoo1s
        6
    Nuttertoo1s  
    OP
       2020-12-19 19:43:55 +08:00
    @mxalbert1996 为了强迫自己学习新技术
    Nuttertoo1s
        7
    Nuttertoo1s  
    OP
       2020-12-19 19:49:05 +08:00
    @mxalbert1996 我感觉以后图形化界面绘制布局应该是主流,现在 4.1 版本的已经很方便了
    tpkxywxd
        8
    tpkxywxd  
       2020-12-20 08:38:00 +08:00
    john6lq
        9
    john6lq  
       2020-12-20 12:48:02 +08:00 via iPhone
    你是不是不知道有个东西叫 drawableStart
    lonnyzhang
        10
    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
        11
    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
        12
    wuliaoshixia  
       2020-12-22 17:15:40 +08:00
    @lonnyzhang 正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4433 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.