Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
如果我尝试在React Native中使用flex,则Svg元素不会显示在ScrollView中_Svg_React Native_Scrollview - Fatal编程技术网

如果我尝试在React Native中使用flex,则Svg元素不会显示在ScrollView中

如果我尝试在React Native中使用flex,则Svg元素不会显示在ScrollView中,svg,react-native,scrollview,Svg,React Native,Scrollview,我想要一个页面,上面有一个Svg图形,下面有一些文字解释它。文本很长,因此页面必须能够滚动。当我在Svg元素上使用固定的宽度和高度时,它可以工作,但我想使用flex 这是一个简单的矩形而不是图形的示例。Svg矩形不显示: import React, { Component } from "react"; import { StyleSheet, View, Text, ScrollView} from "react-native"; import Svg,{ Rect} from 'react

我想要一个页面,上面有一个Svg图形,下面有一些文字解释它。文本很长,因此页面必须能够滚动。当我在Svg元素上使用固定的宽度和高度时,它可以工作,但我想使用flex

这是一个简单的矩形而不是图形的示例。Svg矩形不显示:

import React, { Component } from "react";
import { StyleSheet, View, Text, ScrollView} from "react-native";
import Svg,{  Rect} from 'react-native-svg';

export default class MyScreen extends Component {
  render() {
    return (
      <ScrollView style={{flex:1}}>
      <View style={{flex:1}}>
       <Svg style={{flex:1,alignSelf: 'stretch'}} viewBox='0 0 300 200'>
            <Rect x={10} y={10} height={180} width={280} stroke="#000" fill='none' />  
        </Svg>
      </View>
      <View style={{flex:1}}>
            <Text>Very long text that does not fit on one screen...
            </Text> 
    </View>
    </ScrollView>
    );
  }
}
import React,{Component}来自“React”;
从“react native”导入{样式表、视图、文本、滚动视图};
从'react native Svg'导入Svg,{Rect};
导出默认类MyScreen扩展组件{
render(){
返回(
很长的文本不能在一个屏幕上显示。。。
);
}
}

搜索时,我会在ScrollView中找到使用contentContainerStyle={{flex:1}}而不是style={{flex:1}}的建议。当我尝试此操作时,会显示Svg元素,但是最终出现在屏幕之外的文本也会出现在scrollview之外。您可以看到文本,但当您尝试滚动到它时,scrollview会反弹。注意。你需要一个长文本来重现这种效果

Flexbox布局和滚动视图总是有点棘手,因为如果你考虑Flexbox本身,它试图同时相对于高度和宽度定位元素。在滚动视图中,高度不应为100%。此外,不需要
周围的
组件

因此,在您的情况下,我将尝试删除Scrollview中的所有flex样式,并将其替换为
Dimensions.get(“windows”).width
。你也可以用同样的高度。这里有一个我在世博会上摆弄过的小例子,请试一试


编辑:今天找到了一篇关于你的问题的文章,也许你可以试一试:

谢谢你提供了一个很好的例子。使用Dimensions.get(“window”).width可以很好地工作,但不幸的是,当我在横向和纵向之间切换时,宽度不会像使用flex时那样自动更新。这就是我一直想使用flex的原因。我开始使用维度。。。然后我用“反应本地方向”来处理方向的变化。这是可行的,但当图形重新渲染时,我得到了性能的提高。也许你可以尝试摆弄宽度:“100%”,或者看看我在回答中添加的文章。