我可以将react native操作按钮的位置设置为固定在平面列表上吗? 我添加了一个动作按钮,但是当我滚动平面列表时,该动作按钮隐藏了!
谢谢,前进。
答案 0 :(得分:0)
您将要使用Animated
API
首先,您需要创建一个可以制作动画的平面列表。这很容易通过Animated.createAnimatedComponent()
完成:
import { Flatlist, Animated } from 'react-native'
const AnimatedFlatlist = Animated.createAnimatedComponent(Flatlist)
现在在父组件constructor
中创建一个新的Animated.Value
。这将是您用来为组件制作动画以使其与AnimatedFlatlist
一起滚动的值:
constructor(props) {
super(props)
this.state = { translateY: new Animated.Value(0)}
}
然后将要固定的组件包装在Animated.View
中,并确保在组件样式中添加transform
,并向其传递您创建的动画值:
<Animated.View style={{ transform: [{ translateY: this.state.translateY }]}}>
{YourFixedComponent}
</Animated.View>
最后,您需要将Animated.event
附加到AnimatedFlatlist
上。这是通过onScroll
道具完成的:
<AnimatedFlatlist
data={...}
renderItem={...}
keyExtractor={...}
onScroll={Animated.event(
[{nativeEvent: {contentOffset: {y: this.state.translateY}}}],
{useNativeDriver: true}
)}
scrollEventThrottle={1}
/>
现在,将元素与Flatlist一起移动。这是一个基本示例,您可能需要弄混interpolation
和CSS位置才能完全获得所需的内容。