Hi , : )
看完本文可以帮你解开什么问题?
- 为什么
Compose无需在意view层级问题,怎样嵌套都行? (最简单10s就能明白); Compose如何安装到传统View视图上;
门外汉-从布局窥一眼
这是一段 Compose 的简单代码,我们演示了多层嵌套下的示例:

如果按照传统 View 的思维,我们不难发现,当前 content(R.id.content(FrameLayout)->) 布局中存在5层嵌套,这是极不可取的一种做法。
但是现在是 Compose ,最终的绘制真的会有5层吗?
我们打开 Filpper 看一下:

显然 R.id.content 下只有一个 ComposeView ,然后内部包含了一个 AndroidComposeView ,我们上述中的 Box 最终都被解析并安装到了这个自定义view上。
所以我们简单点可以总结为:
JetPack-Compose 其自定义了一个 基础容器- ComposeView ,以及其他扩展View,比如 AndroidComposeView ,并对其进行封装,对外提供了各种我们在上层所使用的各种组件或者容器。
所以当我们在 Compose 中 setContent 后,其初始化了一个 ComposeView ,并且添加了一个 AndroidComposeView ,其承载了我们代码中所写的全部组件,并进行解析,最终绘制在了传统UI中。
所以为什么说Compose不在意布局层级呢?
因为人家只有两层啊,即业务代码中,
ComposeView下就只有一个AndroidComposeView,而其他Image,Box等组件都是人家自己绘制的。你说相比 传统View 还会存在层级问题吗


