我有一个Text长文本ScrollView,我想检测用户何时滚动到文本的末尾,所以我可以启用一个按钮.
我一直在调试事件中的事件对象,onScroll但似乎没有任何价值我可以使用.
这是关于我想要实现的(降低质量的)GIF。
我有一个scrollview位于屏幕一半的。
我想要的是将其scrollview向上拖动,然后在到达某个位置时将其发送drag touch event给scrollview自身,以便它可以继续滚动。
contentContainerStyle。效果很好,但是我无法单击它后面的视图。有没有一种方法可以单击滚动视图的空白区域?我还尝试检测滚动位置,以便相应地向上移动视图
<ScrollView onScroll={event => moveScrollViewUpIfNeeded(event)}>
...
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
但是当我在iOS模拟器上进行测试时无法正常工作。事件甚至没有触发。React Native Docs指出onScroll需要scrollEventThrottle工作。但是,scrollEventThrottle仅在iOS上可用。就我而言,我也想在Android上使用它。
而且,如果我成功实现了这一点,那么我将面临另一个UI问题:向上拖动ScrollView时,如何在视图尚未到达所需位置时阻止它滚动?
因此,能否请您给我一些实现此目标的提示:)?
谢谢,
mobile-application reactjs react-native react-native-scrollview
嗨,我正在努力实现scrollview像下面的gif链接中心
但无法这样做.以下是我的反应本机代码来实现这一点.
或者有没有任何方法可以滚动到像android这样的scrollview元素的特定索引?
任何帮助,将不胜感激.提前致谢
<ScrollView
style={[styles.imgContainer,{backgroundColor:colorBg,paddingLeft:20}]}
automaticallyAdjustInsets={false}
horizontal={true}
pagingEnabled={true}
scrollEnabled={true}
decelerationRate={0}
snapToAlignment='center'
snapToInterval={DEVICE_WIDTH-100}
scrollEventThrottle={16}
onScroll={(event) => {
var contentOffsetX=event.nativeEvent.contentOffset.x;
var contentOffsetY=event.nativeEvent.contentOffset.y;
var cellWidth = (DEVICE_WIDTH-100).toFixed(2);
var cellHeight=(DEVICE_HEIGHT-200).toFixed(2);
var cellIndex = Math.floor(contentOffsetX/ cellWidth);
// Round to the next cell if the scrolling will stop over halfway to the next cell.
if ((contentOffsetX- (Math.floor(contentOffsetX / cellWidth) * cellWidth)) > cellWidth) {
cellIndex++;
}
// Adjust stopping point to exact beginning of cell.
contentOffsetX = cellIndex * cellWidth; …Run Code Online (Sandbox Code Playgroud) horizontalscrollview ios react-native react-native-scrollview
我有一个水平的平面列表,其中每个项目是width:300
我想要做的是获取当前可见项目的索引.
<FlatList
onScroll={(e) => this.handleScroll(e)}
horizontal={true}
data={this.state.data}
renderItem...
Run Code Online (Sandbox Code Playgroud)
试过这个:
handleScroll(event) {
let index = Math.ceil(
event.nativeEvent.contentOffset.x / 300
);
Run Code Online (Sandbox Code Playgroud)
这样的事情:
handleScroll(event) {
let contentOffset = event.nativeEvent.contentOffset;
let index = Math.floor(contentOffset.x / 300);
Run Code Online (Sandbox Code Playgroud)
但没有什么是准确的我总是得到一个索引或一个索引下来.
我做错了什么以及如何在平面列表中获得正确的当前索引?
例如,我在列表中列出第8项,但我得到索引9或10.

javascript react-native react-native-scrollview react-native-flatlist
有没有办法找出react-native的listview/scrollview组件的滚动方向?
机iOS成分似乎能够通过计算来做到这一点从偏移scrollViewWillBeginDragging和scrollViewDidScroll,但似乎这些不绑定.
我想在ScrollView中使用WebView作为我的本机应用程序.但是如果我这样做,我就无法滚动我的webview,除非我在scrollview上禁用滚动.但是,我需要scrollview和webview中的滚动.有关如何完成此任务的任何建议或解决方案?
webview react-native react-native-scrollview react-native-android
我ListView在单个ScrollView组件中有3 个组件,如下所示:
<ScrollView>
<Header />
<ListView onEndReached={() => alert('load more 1')}/>
<ListView onEndReached={() => alert('load more 2')}/>
<ListView onEndReached={() => alert('load more 3')}/>
<Footer />
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
该Header组件有一些共同的内容,还有3个选项卡,触发显示相应的ListView
问题是任何ListView与onEndReached={() => alert('load more 1')}从未运行警报,所以我向下滚动,撞上列表视图结束时,我不能加载更多.删除包装ScrollView和警报运行,但常见的Header不滚动,因为我们刚刚删除了包装ScrollView.标题需要使用listview滚动,这就是为什么我包装了需要滚动的所有内容ScrollView.
重要提示:
我真的不能用ListView同renderHeader={this.header},对于这种情况.因为,即使Header将滚动,它会重新描绘的共同Header和3个选项卡每个ListView每次ListView渲染,而不是一次.因此Header,每次每次重新渲染都ListView不会为应用程序削减它.
寻找这个问题的解决方案,其中Header带有listviews 的滚动和onEndReached触发可见的滚动ListView.
我试图运行柔性ScrollView,并且只要有滚动型flex: 1的滚动内不起作用.这里是世博会小提琴(您可以运行此代码并使用)
https://snack.expo.io/SySerKNp-
请注意,如果你flex: 1从ScrollView它中删除它确实让滚动,但然后你失去了弹性力量(能够让红色容器向下推高上方框(ScrollView))所以我必须有一个flex.
ps - 我只在android上工作,我还没有在iPhone上测试过(我不介意那里的结果)
知道我错过了什么吗?为什么ScrollView当它有一个flex: 1?谢谢 !
flexbox react-native react-native-scrollview react-native-android
是否可以只向一个方向滚动?我有一个功能,可以检测用户滚动的方向.
但我无法弄清楚如何设置一个标志,如果用户没有回答问题,它将不允许他向右滚动?
谢谢
react-native react-native-scrollview react-native-android react-native-ios