在阅读完文档之后,我不确定ViewStub实现了什么,我不能创建带有View的XML,然后在运行时对其进行充气。
Doc说使用ViewStub在运行时膨胀视图。我不确定为什么这个有用,除了语法更容易。
或者我对此完全错了?
答案 0 :(得分:6)
ViewStub
的基本用法是作为一个元素的“占位符”,以后不需要额外的前期性能负载。现在,你的问题为什么不只是动态地膨胀呢?
它们用于两个目的相同,只是在使用ViewStub
时,您将单独的XML分离并已经定义了所有UI,因此它是一个关注点的分离。现在,如果你有一个动态用户界面,那么最好以编程方式对你的用户界面进行充气。
总而言之,
定义的用户界面:更喜欢ViewStub
动态用户界面:更喜欢以编程方式夸大Views
至于我的经验,我已经将它用于我必须维护的项目,并且需要克服Views
的复杂层次结构,这需要花费很长时间来加载。 ViewStub
帮助延迟加载已定义的UI,从而改善了UI的启动。
答案 1 :(得分:4)
让我们说你有一些屏幕块应该是3个不同用户界面中的一个,但你不知道哪个直到运行时。您可以在运行时使用ViewStub并对其进行充气。而且因为ViewStub在那里,它不会强制重新启动你的屏幕,因为你已经预留了空间。是的,这听起来有点像片段,但这在片段之前存在,并且比编码片段的重量更轻。它也可以以一种方式递归使用片段将很难进行 - 例如,基于树的结构可能有一个ViewStub,你可以为非叶子节点充气,但保留为叶子节点。
它不应该经常使用,但确实有一些用途。