Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 滚动视图内部视图不工作反应本机_Reactjs_React Native_React Native Android - Fatal编程技术网

Reactjs 滚动视图内部视图不工作反应本机

Reactjs 滚动视图内部视图不工作反应本机,reactjs,react-native,react-native-android,Reactjs,React Native,React Native Android,在这里,我尝试一个简单的代码,但滚动视图是不工作的,如果保持在另一个视图。代码如下: return( <View> <Toolbar title={this.props.title}> </Toolbar> <ScrollView> <HomeScreenTop /> <HomeScreenBottom navigator={navigator}/>

在这里,我尝试一个简单的代码,但滚动视图是不工作的,如果保持在另一个视图。代码如下:

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

    <ScrollView>

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

      </ScrollView>

  </View>
 );
<View><Toolbar/></View>
返回(
);
但如果滚动视图保留为父视图,则它可以完美地工作。代码如下:

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

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

  </ScrollView>
 );
返回(
);
现在的问题是我不希望我的工具栏上下滚动,我只希望工具栏下面的内容移动。我怎样才能做到这一点


下一个问题:滚动视图是否必须是父视图才能恢复工作?

您应该像这样在视图中包装工具栏:

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

    <ScrollView>

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

      </ScrollView>

  </View>
 );
<View><Toolbar/></View>

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

<ScrollView>your expected components...</ScrollView>
您期望的组件。。。
并提供从flex到root的视图,如下所示:

<View style={{flex:1}}>


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

Top
必须具有样式
flex:1
,并且
也具有样式中的flexGrow属性,flex对我不起作用

 <ScrollView contentContainerStyle={{ flexGrow: 1 }}>
    ...
</ScrollView>

...
如果您使用的是来自本机的
,并且希望滚动 然后使用KeyboardawarScrollView

<KeyboardAwaareScrollView enableOnAndroid={true}>
.
.

</KeyboardAwareScrollView>

.
.

这将在Android上运行

更新2020-02:它将与React.Fragment
一起运行。所以试试这个

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

    <ScrollView>

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

    </ScrollView>

  </>
 );
返回(
);

如果您使用的是
位置:“绝对”,请将其删除并重试。
你可以试试

<SafeAreaView>

<ScrollView>

</ScrollView>

</SafeAreaView>

使用react片段而不是视图来包装您的滚动视图它对我很有用

<>
<ScrollView>
 .......... 
</ScrollView>
</>

.......... 

对我来说,用TouchableWithoutFeedback包装的滚动视图有时会导致滚动视图无法正常工作。

这让我抓狂,因为我像大家建议的那样添加了
,但没有任何效果。然后,我关闭终端,然后使用以下命令再次重建应用程序:

npx react-native run-android
然后,它开始工作。我希望这能挽救某人的理智:)


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

别忘了Minheightroot视图上没有flex:1也给我带来了类似的问题。将flex:1添加到根视图和bam!滚动工作。真棒的解决方案。感谢you@ChiranjhiviGhimire非常感谢你。您保存了我的生命我正在渲染具有scrollview的子组件,父组件也具有scrollview。我无法妥善处理这件事。你能帮我吗?对我来说什么都不做。这对我来说真的不管用。请你看看这里好吗?从“contentContainerStyle”中删除
flex:1
,它会中断滚动。并添加
flexGrow:1
。添加后,我无法在IOS和Android上滚动。这对我来说真的不起作用。请你看看这里好吗?这对我来说真的不管用。请你看看这里好吗?这也给我带来了麻烦。很高兴这对查莉莎有帮助