反应本地平面列表导航问题

时间:2020-06-02 04:10:32

标签: android reactjs react-native react-native-flatlist recyclerlistview

我将平面列表用作滚动的根容器。 Flatlist中包含RecyclerListView。 平面列表的每一行都是RecyclerListView。 Flatlist的每一行没有固定的高度。因此我正在使用 getItemLayout 返回正确的偏移值。

const getItemLayout = (dat, index) => {
    let offset
    let dataItem
    if (index === 1) {
      offset = Constants.BrowseSettings.REGULAR_LAYOUT_HEIGHT + Constants.BrowseSettings.CAROUSEL_TITLE_HEIGHT
      dataItem = { length: getDimensions(index).height, offset, index }
    } else if (index === 0) {
      offset = 0
      dataItem = { length: 0, offset, index }
    } else {
      console.log(Constants.BrowseSettings.MIXED_LAYOUT_HEIGHT + Constants.BrowseSettings.CAROUSEL_TITLE_HEIGHT)
      console.log(Constants.BrowseSettings.REGULAR_LAYOUT_HEIGHT + Constants.BrowseSettings.CAROUSEL_TITLE_HEIGHT)

      const multipleBlock = Math.floor((index - 1) / 4)
      const remainingBlock = (index - 1) % 4
      let totalOffset = BLOCK_SIZE_OFFSET * multipleBlock
      if (remainingBlock > 0) {
        switch (remainingBlock) {
          case 1:
            totalOffset += DOUBLE_SIZE
            break
          case 2:
            totalOffset += DOUBLE_SIZE + REGULAR_SIZE
            break
          case 3:
            totalOffset += DOUBLE_SIZE + REGULAR_SIZE + REGULAR_SIZE
            break
          default:
            // ignore
            break
        }
      }
      totalOffset += REGULAR_SIZE
      dataItem = { length: getDimensions(index).height, offset: totalOffset, index }
    }
    return dataItem
  }

这在垂直向下滚动的情况下可以正常工作,但是当我向上移动时,有时会导致两次单击以更改焦点,一个使项目处于焦点状态,另一个单击以更改焦点并滚动其中的整个项目焦点。我该如何解决这个问题?

如果我的第一行的第一项的宽度是其下一行的两倍,并且当我按下向下按钮时,焦点将移至下一行的第二项,而不是第一行。 React native是否始终有重点吗?有没有办法从左手开始导航

谢谢

0 个答案:

没有答案