删除或添加视图与 ViewStub
Removing or Adding views vs ViewStub
.remove() .addView() 和使用 ViewStub 有什么区别? ViewStub如何提高布局渲染效率?
正如您在 this article 中看到的那样,当您使用 ViewStub
时,您 <include />
在存根内的布局将不会膨胀,除非需要(设置可见性存根到 VISIBLE
或调用 show()
)。
优点是,包含的视图 none 将成为视图层次结构的一部分,因此您的视图更轻。
看这个例子:
ViewStub 未膨胀:
充气后:
当然,您在这里需要权衡,当您设置 VISIBLE(或 show())时,会发生重新膨胀(仅在 ViewStub 布局上)。
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;
}
.remove() .addView() 和使用 ViewStub 有什么区别? ViewStub如何提高布局渲染效率?
正如您在 this article 中看到的那样,当您使用 ViewStub
时,您 <include />
在存根内的布局将不会膨胀,除非需要(设置可见性存根到 VISIBLE
或调用 show()
)。
优点是,包含的视图 none 将成为视图层次结构的一部分,因此您的视图更轻。
看这个例子:
ViewStub 未膨胀:
充气后:
当然,您在这里需要权衡,当您设置 VISIBLE(或 show())时,会发生重新膨胀(仅在 ViewStub 布局上)。
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;
}