android - Android 支持 React Native 的 onScroll、onScrollEndDrag、onScrollBeginDrag?
问题描述
我在 、 和附加到 a 中有一些简单的console.log
语句。我可以看到它们在我的 iOS 设备上按预期工作,但它们不能在 Android 模拟器上工作。onScrollBeginDrag
onScroll
onScrollEndDrag
ScrollView
这就提出了一个问题,这些道具是否仅在 iOS 上支持,还是 Android 模拟器有问题?
代码很简单:
onScroll={() => console.log("scroll")}
onScrollBeginDrag={() => console.log("begin")}
onScrollEndDrag={() => console.log("end")}
解决方案
是的,他们得到支持,但他们有问题......
我假设您使用 a<FlatList />
来渲染组件,对吗?
如果是这样,您的问题很可能是由于<View />
包含您的<FlatList />
项目被 Android 优化掉了。Android 会自动删除实际上不呈现任何内容的“包装”视图,例如背景颜色或边框。这种优化有助于减少视图层次结构的深度,但在某些情况下可能会导致意外结果(例如这种情况)......
我已经为项目backgroundColor
的包装添加了一个透明<View />
的,现在onScrollBeginDrag
,onScrollEndDrag
和onScroll
的事件<FlatList />
正在按预期触发!
<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 致敬。
推荐阅读
- thymeleaf - 百里香叶中第一个元素的附加属性
- postgresql - PostgreSQL Order BY 不同类型的数组
- javascript - 倒数计时器减慢页面:如何为单个页面创建多个运行倒数计时器?
- javascript - 如何同时异步触发多个 API 调用?
- spring - 在有条件地在 Spring bean 上设置属性值时,SpEL 条件运算符未按预期进行评估(使用 XML 配置)
- python - 删除单个字母停用词而不从包含它的单词中删除该字母
- javascript - 如何在数组中找到第一和第二高的数字系列
- amazon-s3 - 获取对 Google Storage 存储桶内文件夹的临时访问权限
- php - 如何正确避免通过 php 在循环中传递 sql 查询
- python - 如何正确格式化 python 日志格式化程序?