美文网首页StudyJams小伙伴Android开发Android技术知识
LinearLayout设置权重后,为什么width或heigh

LinearLayout设置权重后,为什么width或heigh

作者: 小潘潘 | 来源:发表于2017-03-12 17:52 被阅读416次

    这几天刚学完了 L1 的 linearlayout 的课程,鉴于SJ课程笔记内容重分享,轻重复,所以我的笔记尽量不去重复课程的内容,而是探讨为主。

    这次课程主要令我疑惑的正像是帖子题目中所说,为什么在设置 weight 之后,相应的 width 和 height 要设置为 0dp 呢?视频课程中像是介绍自然规律般的语气,直接了当的就说到要设置成0dp,那如果不设置成0dp,是不是不行呢?我的实验如下:

    一、我偏不设置成0dp

    从上图可以看到,layout_height 值设置成 wrap_content 完全对显示效果没有影响。然后我又实验了放三张图会怎么样。



    结果更令人疑惑,还是没有影响,那设置成0dp意义为何?

    二、Google怎么说?
    要追求答案最终的方法还是 google 一下,所以 google 了一下,果然不是只有我一个人有这个疑惑啊,排名第一次的答案这样说道:他在 linearlayout 横向布局多张图片的时候,将 width 设置成 wrap_content 导致个别图片在权重相同的情况下,分配不均,类似下图:

    但是显然在在线布局工具中并不存在这个问题,所以我不得不在 Android studio 中尝试一下,结果如下:
    然而,纵向效果下,并没有什么问题


    再尝试了一下横向效果,仍然没有重现问题。

    现在我能想到的唯一可能性就是,通过版本更新,这个显示分配不均的问题已经修复了?

    三、可能是比较合理的答案
    正当我以为这个疑惑暂时可能无法解释的时候,我看到了google排在第二位的结果,正是来自于视频课程中介绍的网站:stackoverflow,同样的已经有人问过同样的问题,“In android layouts what is the effect/meaning of layout_height=“0dip””,这个问题有3个回答,其中最多的有29个赞的回答说到,当使用 weight 控制宽、高的时候,width 和 height 可以填入任意的值,但是“0dp”,会让你的“intention”更加明确,老实说,当看到这个 intention 的时候,我懵逼了好一会,还好,后面有人补充回答,大意是说,0dp主要作用是在初始化阶段只需要调整界面布局一次,而当设置成其他值的时候,界面需要调整两次,所以有设置权重的情况下,weight 或者hight 设置成0dp 可以节省更多的运行资源。

    这是我目前找到的,还算比较合理的答案,不知道论坛的大家有什么别的答案嘛?

    相关文章

      网友评论

        本文标题:LinearLayout设置权重后,为什么width或heigh

        本文链接:https://www.haomeiwen.com/subject/jztxnttx.html