You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native DraggableFlatList安卓真机无法滚动,模拟器正常求助

解决安卓真机上DraggableFlatList嵌套ScrollView无法滚动的问题

你遇到的问题核心是滚动容器嵌套冲突:DraggableFlatList本身基于FlatList实现,自带完整的滚动功能,外层再套ScrollView会导致安卓真机上的触摸事件被拦截,进而无法正常滚动(模拟器因为触摸事件模拟机制,冲突表现不明显)。

直接按下面的方式修改即可解决:

方案1:移除外层ScrollView(优先推荐)

既然DraggableFlatList本身就支持滚动,完全不需要额外嵌套ScrollView,直接把它作为滚动容器使用:

<DraggableFlatList
  style={{ flex: 1 }}
  data={Object.keys(data)}
  vertical
  renderItem={({ item, index, drag, isActive }) => renderItem({ item, index, drag, isActive })}
  keyExtractor={(item) => item}
  onDragEnd={handleDragEnd}
/>

方案2:如果需要头部/尾部内容,用组件自带属性

要是你原本套ScrollView是为了加额外的头部或尾部内容,直接用DraggableFlatList的ListHeaderComponent和ListFooterComponent属性即可,避免嵌套:

<DraggableFlatList
  style={{ flex: 1 }}
  data={Object.keys(data)}
  vertical
  renderItem={({ item, index, drag, isActive }) => renderItem({ item, index, drag, isActive })}
  keyExtractor={(item) => item}
  onDragEnd={handleDragEnd}
  // 自定义头部
  ListHeaderComponent={() => (
    <View style={{ padding: 16, backgroundColor: '#f5f5f5' }}>
      <Text>照片列表</Text>
    </View>
  )}
  // 自定义尾部
  ListFooterComponent={() => (
    <View style={{ height: 20 }} />
  )}
/>

额外检查点

  • 确保DraggableFlatList的父容器设置了flex: 1,给足布局空间,避免因为容器高度不足导致滚动失效。
  • 不要给DraggableFlatList设置固定高度(除非你明确需要),让它自适应父容器空间。

内容的提问来源于stack exchange,提问作者Megha Kn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:30:00