内部视图中的滚动视图无法正常反应

Rit*_*ten 16 reactjs react-native react-native-android

在这里,我正在尝试一个简单的代码,但滚动视图如果保存在另一个视图中则不起作用.代码是这样的:

  return(
  <View>
    <Toolbar title={this.props.title}>
    </Toolbar>

    <ScrollView>

      <HomeScreenTop />
      <HomeScreenBottom navigator={navigator}/>

      </ScrollView>

  </View>
 );
Run Code Online (Sandbox Code Playgroud)

但如果滚动视图保持为父视图,则它可以完美地工作.代码如下:

  return(
  <ScrollView>
    <Toolbar title={this.props.title}>
    </Toolbar>

      <HomeScreenTop />
      <HomeScreenBottom navigator={navigator}/>

  </ScrollView>
 );
Run Code Online (Sandbox Code Playgroud)

现在的问题是我不希望我的工具栏上下滚动,我只想让工具栏下面的内容移动.我怎样才能做到这一点?

接下来的问题:滚动视图必须是父视图才能返回工作吗?

Led*_*ine 32

在样式中使用属性flexGrow,flex didnt对我有用.

 <ScrollView contentContainerStyle={{ flexGrow: 1 }}>
    ...
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下没有任何作用。 (4认同)
  • 从“contentContainerStyle”中删除“flex: 1”,它会破坏滚动。并添加“flexGrow:1”。 (4认同)
  • 谢谢。应该是正确的答案 (2认同)

Chi*_*ire 27

你应该在视图中包装工具栏,如下所示:

<View><Toolbar/></View>
Run Code Online (Sandbox Code Playgroud)

将您要在scrollview中滚动的组件包装为:

<ScrollView>your expected components...</ScrollView>
Run Code Online (Sandbox Code Playgroud)

并为根视图提供flex:

<View style={{flex:1}}>
Run Code Online (Sandbox Code Playgroud)

最后,您的代码将按预期运行.

  • 根视图上没有 flex:1 对我造成了类似的问题。将 flex:1 添加到根视图和 bam!滚动工作。 (2认同)

use*_*661 12

这让我发疯,因为我<view> and <ScrollView>按照每个人的建议添加了内容,但没有任何效果。然后我关闭了终端,然后使用以下命令再次重建应用程序:

npx react-native run-android
Run Code Online (Sandbox Code Playgroud)

然后,它开始工作了。我希望这可以挽救某人的理智:)

仅供参考,仅按 r (或刷新)也不起作用。我必须重建它。


Ste*_*ley 10

顶部<View>必须有风格flex:1,也<ScrollView>