React Native onLayout nativeEvent.layout.y始终返回0

时间:2017-01-25 21:04:15

标签: android react-native

我正在创建一个视图网格。我正在使用纯flex。即没有绝对定位。实际屏幕截图:

Actual screenshot

我需要知道网格中每个视图的位置,并且我正在使用onLayout道具。 问题是evt.nativeEvent.layout上的y值始终为零,其余值(x,height,width)都很好。 我只在Android中测试,使用Genymotion和物理索尼Xperia设备(均使用Android 6.0.1)。

为什么y值为0的任何想法?

React Native版本:  反应 - 天然:0.40.0,反应 - 天然 - cli:1.2.0

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

好的..我怀疑这样,所以我最终保存了行的Y位置,然后将其分配给“单元格”。谢谢你的帮助@HaitaoLi

答案 1 :(得分:0)

我的版本

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]
)