无法在React Native中滚动到ScrollView的底部

Man*_*ane 3 javascript scrollview reactjs react-native

我有一个使用a的非常简单的示例,ScrollView但似乎无法滚动到底部。

该示例完全是基本示例,我没有做任何特别的事情,但是最后一项永远不会完全可见。

博览会代码

 import React, { Component } from "react";
 import { Text, View, ScrollView, StyleSheet } from "react-native";
 import { Constants } from "expo";

 const data = Array.from({ length: 20 }).map((_, i) => i + 1);

 export default class App extends Component {
  render() {
    return (
        <ScrollView style={styles.container}>
            {data.map(d => (
                <View style={styles.view}>
                    <Text style={styles.text}>{d}</Text>
                </View>
            ))}
        </ScrollView>
      );
    }
  }

const styles = StyleSheet.create({
  container: {
     paddingTop: Constants.statusBarHeight
  },
  text: {
    fontWeight: "bold",
    color: "#fff",
    textAlign: "center",
    fontSize: 28
},
view: {
    padding: 10,
    backgroundColor: "#018bbc"
  }
 });
Run Code Online (Sandbox Code Playgroud)

输出图像

Moh*_*ani 24

ScrollView我的应用程序中只有一个,并且运行良好。然后我在顶部添加了一个标题组件,我的底部ScrollView不再可见。我尝试了一切,但没有任何效果。直到我在尝试了所有疯狂的事情一个小时后找到了解决方案,然后才找到。我通过将paddingBottomas添加contentContainerStyle到我的ScrollView.

<ScrollView contentContainerStyle={{paddingBottom: 60}} >
    {this.renderItems()}
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

  • 这似乎非常有效。随着时间的推移,您是否遇到过任何问题? (2认同)

小智 10

将填充样式应用于“ contentContainerStyle”道具,而不是ScrollView的“ style”道具。

  • 这应该被标记为正确答案。 (6认同)

Hen*_*hli 9

设置flexGrow: 1contentContainerStyle您的ScrollView

contentContainerStyle={{ flexGrow: 1 }}
Run Code Online (Sandbox Code Playgroud)


jov*_*ani 8

我通过将 Scrollview 的底部属性设置contentInset为一个足以让我看到内容的最底部部分(在我的例子中是一个按钮)的值来修复我的问题。

例子:

<ScrollView
  contentInset={{bottom: 80}}>
  {{ content }}
</ScrollView>
Run Code Online (Sandbox Code Playgroud)


ufx*_*eng 5

修改您的render()方法并将其包装ScrollViewView容器内,并将 设置paddingTop为该View容器:

render() {
    return (
        <View style={ styles.container}>
            <ScrollView >
                {data.map(d => <View style={styles.view}><Text style={styles.text}>{d}</Text></View>)}
            </ScrollView>
        </View>
    );
}
Run Code Online (Sandbox Code Playgroud)

  • 乍一看,这似乎合乎逻辑。然而,我在我的代码中实现了它,但没有明显效果。我的 `ScrollView` 底部有一个按钮无法访问,因为在释放水龙头后视图会弹回顶部。我希望在视图被释放时滚动保持不动。 (3认同)