我正在尝试实现一个ScrollView列表,它可以淡出列表底部的项目。这可以通过监控滚动位置,确定每个项目的布局,然后为每个项目添加不透明度来实现~即使这样,它也不会实现平滑的淡出,因为每个项目都有一个固定的不透明度。我想知道是否有一个更优雅和清洁的方式来实现这一点?
ScrollView
hfyxw5xn1#
1.使用expo中的LinearGradient渲染平滑淡出。1.如果ScrollView有可触摸的项目,请在LinearGradient中添加属性"pointerEvents = {'none '}"。它可以绕过ScrollView的触摸事件。
import {LinearGradient} from 'expo'; <View style={{width:100, height:100, backgroundColor:'#fff'}}> <ScrollView /> <LinearGradient style={{position:'absolute', bottom:0, width:100, height:20}} colors={['rgba(255, 255, 255, 0.1)', 'rgba(255, 255, 255, 0.8)']} pointerEvents={'none'} /> </View>
编辑:1.如果是动态图像,也许你可以试试图像父级的backgroundColor。下面的例子是黑色的,所以使用黑色的LinearGradient。
<View style={{flex:1, backgroundColor:'#000'}}> <ImageBackground style={{flex:1}} source={{uri:'https://images.pexels.com/photos/67636/rose-blue-flower-rose-blooms-67636.jpeg?cs=srgb&dl=beauty-bloom-blue-67636.jpg&fm=jpg'}} > <LinearGradient style={{flex:1}} locations={[0.7, 0.9, 1]} colors={['rgba(0, 0, 0, 0)', 'rgba(0, 0, 0, 0.1)', 'rgba(0, 0, 0, 0.5)']} pointerEvents={'none'} /> </ImageBackground> </View>
4dc9hkyq2#
在ScrollView中有实现渐变效果的软件包。rn-faded-scrollview确实工作得很好。
<RNFadedScrollView allowStartFade={true} allowEndFade={true} bounces={false} horizontal={true} > </RNFadedScrollView>
希望这个有用。
4dbbbstv3#
您可以使用“淡入淡出边长”属性(仅限Android)https://reactnative.dev/docs/0.63/scrollview#fadingedgelength
3条答案
按热度按时间hfyxw5xn1#
1.使用expo中的LinearGradient渲染平滑淡出。
1.如果ScrollView有可触摸的项目,请在LinearGradient中添加属性"pointerEvents = {'none '}"。它可以绕过ScrollView的触摸事件。
编辑:
1.如果是动态图像,也许你可以试试图像父级的backgroundColor。下面的例子是黑色的,所以使用黑色的LinearGradient。
4dc9hkyq2#
在
ScrollView
中有实现渐变效果的软件包。rn-faded-scrollview确实工作得很好。
希望这个有用。
4dbbbstv3#
您可以使用“淡入淡出边长”属性(仅限Android)https://reactnative.dev/docs/0.63/scrollview#fadingedgelength