DecorView里面的ViewStub是什么?

What is the ViewStub inside DecorView?

我发现在decorView下,无论有无标题或ActionBarViewStub都会存在。

有什么用?

根据此视图的 ID,ActionMode 布局可能是 place/space/container。在某些设备上,它可能看起来像下面(内容上方的顶部栏,当 ActionBar/Toolbar 出现时被替换)

ViewStub 有点像 View,会在以后需要时懒惰地膨胀。

在您发布的图表中,您可以看到 action_mode_bar_stub ID。

显然,您并不总是需要放大该视图。一旦用户输入 Contextual Action Mode,您将只需要它。因此,为了不混淆视图层次结构,直到用户实际需要显示该视图时,该视图才会被扩充。膨胀后,视图层次结构将发生变化,您将不再在那里看到 ViewStub

查看此文件:https://github.com/aosp-mirror/platform_frameworks_base/blob/6bebb8418ceecf44d2af40033870f3aabacfe36e/core/res/res/layout/screen.xml

在这个文件中,action_mode_bar_stub的实际代码:

<!-- Popout bar for action modes -->
<ViewStub android:id="@+id/action_mode_bar_stub"
    android:inflatedId="@+id/action_mode_bar"
    android:layout="@layout/action_mode_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="?attr/actionBarTheme"/>

据说是动作模式的弹出栏。