我将平面列表用作滚动的根容器。 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是否始终有重点吗?有没有办法从左手开始导航
谢谢