React Native在Android上支持onScroll,onScrollEndDrag,onScrollBeginDrag?

时间:2019-05-01 18:04:52

标签: android reactjs react-native android-emulator expo

我在console.log的{​​{1}},onScrollBeginDragonScroll中有一些简单的onScrollEndDrag语句。我可以看到它们在我的iOS设备上可以正常运行,但是在Android模拟器上却无法运行。

这引发了一个问题,这些道具仅在iOS上受支持,还是Android模拟器有问题?

代码很简单:

ScrollView

2 个答案:

答案 0 :(得分:0)

我在FlatList中使用onScrollBeginDrag,本机反应为0.59.9,正如您所说的,它不能在android模拟器上运行(已在genymotion和android 7上进行了测试)。

它确实可以在运行android 8的智能手机上运行,​​所以有一种使用它的方法...

答案 1 :(得分:0)

是的,它们受支持,但是存在问题...

我假设您使用<FlatList />来渲染组件,对吗?

如果是这样,则您的问题很可能是由<View />包含您的<FlatList />项目所组成的,这些项目已被Android优化。 Android会自动删除实际上不会呈现任何内容(例如背景色或边框)的“包装”视图。这种优化有助于减少视图层次结构的深度,但在某些情况下(例如这种情况)可能会导致意外结果...

我在商品的包装backgroundColor中添加了透明的<View />,现在在{{的onScrollBeginDragonScrollEndDragonScroll事件中添加了透明的<FlatList /> 1}}正在按预期射击!

<FlatList
  onScrollBeginDrag={() => console.log('begin')}
  onScrollEndDrag={() => console.log('end')}
  onScroll={() => console.log('end')}
  data={[{key: 'a'}, {key: 'b'}]}

  renderItem={({ item }) => (
    <View style={{ backgroundColor: 'transparent' }}>
      <Text>{item.key}</Text>
    </View>
  )}
/>

我还删除了FlatList填充,并在包装​​视图中添加了一些填充,这使可触摸区域更大。

PS:对Bartol Karuza表示敬意。