Android React Native OnlyLayout nativeEvent.layout.y始终返回0
我正在创建一个视图网格。我用纯flex来做。i、 没有绝对定位。实际屏幕截图: 我需要知道网格中每个视图的位置,为此,我使用了onLayout道具。 问题是evt.nativeEvent.layout上的y值始终为零,其余值(x、高度、宽度)都可以。 我只在安卓系统中进行测试,使用的是Genymotion和索尼Xperia物理设备(都是安卓6.0.1) 你知道为什么y值是0吗 反应本机版本: react-native:0.40.0,react-native cli:1.2.0Android React Native OnlyLayout nativeEvent.layout.y始终返回0,android,react-native,Android,React Native,我正在创建一个视图网格。我用纯flex来做。i、 没有绝对定位。实际屏幕截图: 我需要知道网格中每个视图的位置,为此,我使用了onLayout道具。 问题是evt.nativeEvent.layout上的y值始终为零,其余值(x、高度、宽度)都可以。 我只在安卓系统中进行测试,使用的是Genymotion和索尼Xperia物理设备(都是安卓6.0.1) 你知道为什么y值是0吗 反应本机版本: react-native:0.40.0,react-native cli:1.2.0 谢谢你的帮助。好
谢谢你的帮助。好的。。我怀疑这一点,所以我最终保存了行的Y位置,然后将其分配给“单元格”。谢谢您的帮助@HaitaoLi我的版本
const handleTabLayout = useCallback(
(e: LayoutChangeEvent, index: number) => {
const { width, x: nativeX } = e.nativeEvent.layout
const x =
Platform.OS === 'android' ? tabsWidth.reduce((sum, el, i) => (i < index ? sum + el.width : sum), 0) : nativeX
if (tabsWidth[index]?.width !== width) {
const newTabsWidth = tabsWidth.map((tw, twIndex) => (twIndex === index ? { ...tw, width, x } : tw))
setTabsWidth(newTabsWidth)
}
},
[tabsWidth]
)
const handleTabLayout=useCallback(
(e:LayoutChangeEvent,索引:number)=>{
const{width,x:nativeX}=e.nativeEvent.layout
常数x=
Platform.OS=='android'?tabsWidth.reduce((总和,el,i)=>(i(twIndex==索引?{…tw,width,x}:tw))
setTabsWidth(新宽度)
}
},
[tabsWidth]
)
您是否将所有视图都放在顶层视图中,还是放在单独的行中?单独的行。如果使用单独的行,则每个单元格的y坐标相对于其自己的行,因此始终为0。确定。。我怀疑这一点,所以我最终保存了行的Y位置,然后将其分配给“单元格”。谢谢你的帮助@HaitaoLi