什么是ViewStub的重点,当我还可以懒惰地膨胀一个没有它的视图?

时间:2014-07-07 03:59:31

标签: android

在阅读完文档之后,我不确定ViewStub实现了什么,我不能创建带有View的XML,然后在运行时对其进行充气。

Doc说使用ViewStub在运行时膨胀视图。我不确定为什么这个有用,除了语法更容易。

或者我对此完全错了?

2 个答案:

答案 0 :(得分:6)

ViewStub的基本用法是作为一个元素的“占位符”,以后不需要额外的前期性能负载。现在,你的问题为什么不只是动态地膨胀呢?

它们用于两个目的相同,只是在使用ViewStub时,您将单独的XML分离并已经定义了所有UI,因此它是一个关注点的分离。现在,如果你有一个动态用户界面,那么最好以编程方式对你的用户界面进行充气。

总而言之,

  • 定义的用户界面:更喜欢ViewStub

  • 动态用户界面:更喜欢以编程方式夸大Views

至于我的经验,我已经将它用于我必须维护的项目,并且需要克服Views的复杂层次结构,这需要花费很长时间来加载。 ViewStub帮助延迟加载已定义的UI,从而改善了UI的启动。

答案 1 :(得分:4)

让我们说你有一些屏幕块应该是3个不同用户界面中的一个,但你不知道哪个直到运行时。您可以在运行时使用ViewStub并对其进行充气。而且因为ViewStub在那里,它不会强制重新启动你的屏幕,因为你已经预留了空间。是的,这听起来有点像片段,但这在片段之前存在,并且比编码片段的重量更轻。它也可以以一种方式递归使用片段将很难进行 - 例如,基于树的结构可能有一个ViewStub,你可以为非叶子节点充气,但保留为叶子节点。

它不应该经常使用,但确实有一些用途。