1

.remove() .addView() 和使用 ViewStub 有什么区别?ViewStub 如何提高布局渲染效率?

4

2 回答 2

2

ViewStub 在性能上与添加 View 相同。看看 ViewStub.inflate()。它的作用是动态添加视图。

public View inflate() {
    ...
    final View view = factory.inflate(mLayoutResource, parent,
            false);
    ... 
    parent.addView(view, index, layoutParams);
    } else {
        parent.addView(view, index);
    }
    ...
    return view;
}

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewStub.java

于 2017-09-14T07:09:04.807 回答
2

正如您在本文中看到的那样,当您使用 时,除非需要(将存根的可见性设置为或调用) ,否则ViewStub您在存根内部的布局<include />不会被夸大。优点是,包含的视图都不会成为视图层次结构的一部分,因此您的视图更轻。VISIBLEshow()

请参阅此示例: ViewStub 未膨胀: 在此处输入图像描述

充气后: 在此处输入图像描述

当然,您在这里需要权衡,当您设置 VISIBLE(或 show())时,会发生重新膨胀(仅在 ViewStub 布局上)。

于 2016-05-17T19:24:32.580 回答