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