外观
如何理解ViewStub、include 与 GONE?
标准回答
include是布局复用,通常仍在父布局 inflate 时创建内部控件。GONE通常让已创建的 View 不参与正常的可见布局和绘制,但并不撤销对象创建、构造函数或资源加载成本。
ViewStub本身很轻,在需要时才替换为真实子树,所以能延迟非首屏 UI 的创建成本;代价是第一次展示时可能出现集中 inflate 和布局开销。它被替换后不能当成可反复“还原”的占位控件使用,应保存真实 View 引用或重建设计。
适合不一定会展示的复杂面板。已经需要立即显示的主界面不应为了“用了懒加载”而延后可用。
追问与回答
所有隐藏布局都换 ViewStub 吗
不。轻量、很快必然显示或需要频繁切换的部分未必值得。依据首次展示延迟、使用概率和内存预算决定。
内容来源
- Android 与 AI 工程 Wiki · 原条目
q022