最近一直搞RN都没有时间更新博客,今天调试了一个安卓奇怪的问题,记录下。
背景
我们的项目目前比较成熟,安卓和iOS都有版本,在迭代更新。因为业务需求,改动频繁和量大决定混合RN。
所以在已有原生应用的基础上,我将安卓和iOS 项目都集成到了一个RN项目。
问题
在安卓项目了,我是在一个原生的Activity里添加了一个RN View(ReactRootView)。这个View的父控件为LinearLayout。
RN View是一个表单,开发完成后出现了问题如下:
1、第一次进入这个ActivityReactRootView是好的,第二次进去布局错乱。\color{red} 1、第一次进入这个Activity ReactRootView是好的,第二次进去布局错乱。1、第一次进入这个ActivityReactRootView是好的,第二次进去布局错乱。
2、键盘弹出引起布局变化,调整不回去\color{red} 2、键盘弹出引起布局变化,调整不回去2、键盘弹出引起布局变化,调整不回去
分析
1、因为iOS这边是好的
2、错误现象应该是布局变化没有被计算到。
3、测试了ScollView 排除了JS页面原因
得出结论,安卓原生布局问题。
解决
将ReactRootView的父视图换成FrameLayout\color{red} 将ReactRootView的父视图换成FrameLayout将ReactRootView的父视图换成FrameLayout
具体原因不是很清除,但是看ReactRootView的布局代码都是绝对布局。