加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

React Native ScrollView在发布后抢回回顶部

发布时间:2020-12-15 05:06:23 所属栏目:百科 来源:网络整理
导读:我在其他应用程序中使用了ScrollView,只添加了样式= {styles.container}的样式.然而,在这个应用程序中,我在我的样式中创建我有alignItems:’flex-start’,它只使用style = {styles.container}抛出一个错误,而你需要传入alignItems:’flex-start’通过conte
我在其他应用程序中使用了ScrollView,只添加了样式= {styles.container}的样式.然而,在这个应用程序中,我在我的样式中创建我有alignItems:’flex-start’,它只使用style = {styles.container}抛出一个错误,而你需要传入alignItems:’flex-start’通过contentContainerStyle = { styles.container}.

错误:不变违规:ScrollView子布局([“alignItems”])必须通过contentContainerStyle prop应用.

但是当我在视图中向下滚动时添加contentContainerStyle时,一旦手指从手机上抬起(或在模拟器中释放鼠标),滚动会自动返回到顶部.如果我只使用style = {styles.container}并取出alignItems:’flex-start’它会正确滚动,但UI中的项目并没有按照我需要的方式进行布局.是什么导致它使用contentContainerStyle滚动回顶部并且有修复?

渲染:

var _that = this;
var iconsToShow = icons.map(function (icon,i){
  if(i < 81){
    return (
      <TouchableHighlight
        onPress={() => _that.changeIcon(indexToChange,icon)}
        underlayColor='#F7F7F7'
        key={i}>
          <Text style={styles.iconText}><IonIcons name={icon} size={30} color="#555" /></Text>
      </TouchableHighlight>
    );
  }
});

return (
  <Carousel width={SCREEN_WIDTH} animate={false} indicatorColor="#444" inactiveIndicatorColor="#999" indicatorAtBottom={false} indicatorOffset={16}>
    <View>
      <ScrollView contentContainerStyle={styles.container}>{iconsToShow}</ScrollView>
    </View>

    <View>
      //next page for carousel
    </View>

  </Carousel>
);
我想出了如何让它滚动.而不是让视图包装ScrollView和ScrollView具有任何flex样式或alignItems:’flex-start’与contentContainerStyle = {styles.container},而不是将它放在View上,它是ScrollView的子节点而只是使用style =而不是contentContainerStyle =.

渲染:

<ScrollView style={styles.container}>
    <Text style={styles.goalName}>{goal}</Text>
    <View style={styles.viewContainer}>
        {iconsToShow}
    </View>
</ScrollView>

造型:

var styles = StyleSheet.create({
    container: {
        backgroundColor: 'transparent',paddingLeft:20,paddingRight:20
    },viewContainer:{
        flexDirection:'row',flexWrap: 'wrap',alignItems: 'flex-start',flex: 1
    },iconText:{
        paddingLeft:15,paddingRight:15,paddingTop:15,paddingBottom:15
    },goalName:{
        textAlign:'center',marginTop:40,marginBottom:10,fontSize:20
    }
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读