由于容纳 RN view 的外围控件不确定,同时又要与其他view协调好尺寸和布局。
所以 RN 对 RootView(包含了一个模块的所有布局)的处理挺有技巧,RN 中有如下调用逻辑:
ReactActivity.createRootView -> setContentView(mReactRootView)
ReactRootView.onMeasure()
ReactInstanceManagerImpl.attachMeasuredRootViewToInstance
UIManagerModule.addMeasuredRootView
得到宽高:
|
通过这个 SizeMonitoringFrameLayout.OnSizeChangedListener 将 SizeMonitoringFrameLayout(实际扮演一个容器 ViewGroup 来监听布局的改变)的宽高传递给 css-layout 用于布局各个”盒”节点。