React Native ScrollView组件实现上拉下滑背景色不同

方法一:通过设置contentInset实现

<ScrollView
        contentContainerStyle={styles.container}
        contentInset={styles.contentInset}
        ref={(view) => { this.myScrollView = view}}
>
    <View style={styles.header} />
    ……
    <TouchableOpacity
          style={styles.login}
          onPress={() => { this.myScrollView.scrollTo({y: 1000})}}>
          <Text>让我滚回去</Text>
    </TouchableOpacity>
</ScrollView>

contentInset: {
    top: -1000, left: 0, bottom: 0, right: 0
  },
header:{
    height: 1000,
    backgroundColor: '#3399ff',
  },
复制代码

方法二:通过设置contentOffset实现

constructor(props) {
    super(props);
    this.state = {y: 0};
  }
changeScroll = (e) => {
    this.setState({y: e.nativeEvent.contentOffset.y});
  };
<ScrollView
        style={{backgroundColor: this.state.y < 0 ? '#3399ff': 'white'}}
        contentContainerStyle={styles.container}
        contentOffset={{x: 0, y: 0}}
        onScroll={this.changeScroll}
        ref={(view) => { this.myScrollView = view}}
>
    ……
    <TouchableOpacity
          style={styles.login}
          onPress={() => { this.myScrollView.scrollTo({y: 0})}}>
          <Text>让我滚回去</Text>
    </TouchableOpacity>
</ScrollView>
复制代码

推荐使用方法一,因为点一次屏幕onScroll才变一次,如果按着屏幕上下拉就不能实现上下不同颜色了,必须松开手重新点才可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值