我尝试实现一个水平和垂直滚动如下:
ScrollPreviewMock.
水平滚动将特色内容显示为图像(应该是可点击的)。垂直滚动有其他可点击的项目。
我的第一次尝试是使用两个ScrollView,它们都具有绝对位置,但是水平ScrollView消耗所有触摸事件(即使在添加pointerEvents ={" box-none "}之后)。
这就是我在那个案子中所尝试的:
import React, { Component } from "react";
import { Dimensions, ScrollView, Text, StyleSheet, View } from "react-native";
const DimensionsWindowWidth = Dimensions.get("window").width;
export default class App extends Component {
render() {
return (
<View style={styles.container}>
<ScrollView horizontal={true} style={styles.scrollView}>
<View style={styles.slide}>
<Text>H1</Text>
</View>
<View style={styles.slide}>
<Text>H2</Text>
</View>
<View style={styles.slide}>
<Text>H3</Text>
</View>
</ScrollView>
<ScrollView pointerEvents={"box-none"} style={styles.scrollView}>
<View style={styles.item}>
<Text>V1</Text>
</View>
<View style={styles.item}>
<Text>V2</Text>
</View>
<View style={styles.item}>
<Text>V3</Text>
</View>
<View style={styles.item}>
<Text>V4</Text>
</View>
</ScrollView>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1
},
slide: {
padding: 100,
width: DimensionsWindowWidth,
height: "100%"
},
scrollView: {
position: "absolute",
width: "100%",
height: "100%"
},
item: {
margin: 40,
height: 100
}
});
(Also作为零食:https://snack.expo.io/Hyb7x-qQQ)
我的第二次尝试是使用PanResponder,并在onPanResponderMove方法中使用ScrollViews的scrollTo方法。但后来似乎我必须自己实现所有ScrollView的特殊功能,如平滑滚动和反弹。
有什么想法,我可以解决这个问题,同时有两个,背景在水平和项目在垂直滚动点击?
4条答案
按热度按时间uyhoqukh1#
在IOS中,您可以简单地使用嵌套的ScrollView的这样的行为,但在Android中,您将需要其他东西。
看一看react-native-nested-scroll-view,它声称只为Android做这件事,我没有用过它,但它似乎使用了原生的NestedScrollView类。
64jmpszr2#
下面是我如何在我的应用程序中为我的网格表实现垂直和水平滚动。它在iOS和Android上都很好用。我希望它会对你有帮助。
w9apscun3#
在这里我可以垂直和水平滚动。我测试了它的android。
fdbelqdn4#
下面是一组基于其他答案的简化代码,您只需要嵌套
scrollviews
,并将内部的设置为horizontal。