在i0S上,measurelnWindow函数能正常返回值,但在Android上,对于所有参数可能返回undefined或0。原因是如果Android上的View只有布局属性而无样式属性,如背景颜色,底层可能不会创建对应的视图。为解决此问题,可以将View的collapsable属性设置为false,确保原生底层有对应的视图存在。
View.measureInWindow((left, top, width,height)=>{
console.log(left,top,width,height);//安卓端返回undefined
})
在需要计算的html标签上添加 collapsab1e={false}
即可解决
原因如下:
在Android,如果一个View只有布局属性,没有样式属性,譬如背景颜色,那么它只会用于计算布局,底层不会有和它对应的存在。
有些时候,一个View的样式属性可能会从无到有,或者反过来,此时需要确保在原生底层有对应的视图存在,否则可能会出现奇怪的现象,那么将collapsable
设置为 false
。