Skip to content

> 如果不考虑布局的排版要求,那肯定是的FrameLayout大于LinearLayout中,LinearLayout中和RelativeLayout的相差无几。 #34

Closed
@chenqi5256969

Description

@chenqi5256969

如果不考虑布局的排版要求,那肯定是的FrameLayout大于LinearLayout中,LinearLayout中和RelativeLayout的相差无几。

  1. FrameLayout中的子元素都堆在屏幕的左上角,子元素不能指定位置,绘制起来当然效率高
    .2。在阅读RelativeLayout和LinearLayout的源码中,我发现有这么一段注释:
    //所以,而不是跑步代码两次,我们只是
    将宽度设置为“默认显示宽度” 我们没有运行代码两次,而是将宽度设置为“默认显示宽度”
    楼上说的都是RelativeLayout会绘制两次,这到底是怎么回事???
    @Petterpx @Moosphan @kongxiaoan

首先很抱歉,我上面的回答有误,实际上应该是 测量(Measure)两次,回到原因上面,是因为:
RelativeLayout会对子View做两次measure。这是由于RelativeLayout是基于相对位置的,而且子View会在横向和纵向两个方向上分布,因此,需要在横向和纵向分别进行一次measure过程。而LinearLayout只进行纵向或横向的测量,所以measure的时间会比RelativeLayout少很多。但是如果设置了 weight,在测量的过程中,LinearLayout会将设置过weight的和没设置的分别测量一次,这样就导致measure两次。

Originally posted by @Petterpx in #30 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions