在反应原生中将组件高度设置为100%

lha*_*hne 37 react-native

我可以给出样式数值的高度元素,40但这些必须是整数.如何让我的组件高度为100%

wan*_*gii 37

看看flexbox doc.在样式表中,使用:

flex:1,
Run Code Online (Sandbox Code Playgroud)

  • 这实际上将高度和宽度设置为100%.只设置高度? (4认同)

Tsi*_*ina 37

将窗口高度抓取到变量中,然后将其指定为要定位的Flex容器的高度:

let ScreenHeight = Dimensions.get("window").height;
Run Code Online (Sandbox Code Playgroud)

在你的风格:

var Styles = StyleSheet.create({ ... height: ScreenHeight });
Run Code Online (Sandbox Code Playgroud)

请注意,您必须在使用之前导入Dimensions:

import { ... Dimensions } from 'react-native'
Run Code Online (Sandbox Code Playgroud)


小智 16

您只需添加height: '100%'到项目的样式表中即可.这个对我有用

  • 这在React Native上不起作用 (4认同)
  • @Southerneer答案没错.这很有效,我每天都会使用iOS和Android与RN合作.看从RN回购此代码段,例如:https://github.com/facebook/react-native/blob/9f33fe258312987f490cc0f3a71c0c4f93494e7f/Libraries/ReactNative/YellowBox.js它使用的高度和宽度以百分比.我不能说为什么没有记录,但它的工作原理.我尽可能使用flex,但是当你想要相对大小时,flex和Dimensions并不总是适用. (4认同)
  • 不知道为什么这会被否决。在我的机器上完美运行(tm) (3认同)

gli*_*a93 9

flex:1应该适用于几乎任何情况。但是,请记住 for ScrollView,它contentContainerStyle控制视图的高度:

错误的

const styles = StyleSheet.create({
  outer: {
    flex: 1,
  },
  inner: {
    flex: 1
  }
});

<ScrollView style={styles.outer}>
  <View style={styles.inner}>
  </View>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

正确的

const styles = StyleSheet.create({
  outer: {
    flex: 1,
  },
  inner: {
    flex: 1
  }
});

<ScrollView contentContainerStyle={styles.outer}>
  <View style={styles.inner}>
  </View>
</ScrollView>

Run Code Online (Sandbox Code Playgroud)

  • 我不知道“contentContainerStyle”。这解决了我的问题:-) (4认同)

Ara*_*ras 5

大部分时间应该使用flexGrow: 1flex: 1

或者你可以使用

import { Dimensions } from 'react-native';
const { Height } = Dimensions.get('window');

styleSheet({
  classA: {
    height: Height - 40,
  },
});
Run Code Online (Sandbox Code Playgroud)

如果它们都不适合您,请尝试:

container: {
  position: 'absolute',
  top: 0,
  bottom: 0,
  left: 0,
  right: 0,
}
Run Code Online (Sandbox Code Playgroud)