Summary: These pages should sufficiently give a beginner enough information to make most layouts in React Native. They should go after the basics-style page, whenever that is ready. Having a single page for Layout was too much, so I split it into two: Dimensions and Layout. ![dimensions react native a framework for building native apps using react](https://cloud.githubusercontent.com/assets/1198882/16311045/c6918b64-3923-11e6-8cc9-daeda9eb40e6.png) ![layout react native a framework for building native apps using react](https://cloud.githubusercontent.com/assets/1198882/16310233/9a66405a-3920-11e6-9ef6-1594f7228e83.png) lacker Closes https://github.com/facebook/react-native/pull/8364 Differential Revision: D3477147 Pulled By: lacker fbshipit-source-id: 1ef31ac0a64e43166a7581b38fa8263282672eeb
2.3 KiB
id | title | layout | category | permalink | next |
---|---|---|---|---|---|
basics-dimensions | Dimensions | docs | The Basics | docs/basics-dimensions.html | basics-layout |
A component's dimensions determine its size on the screen.
Fixed Dimensions
The simplest way to set the dimensions of a component is by adding a fixed width
and height
to style. All dimensions in React Native are unitless, and represent density-independent pixels.
import React from 'react';
import { AppRegistry, View } from 'react-native';
class AwesomeProject {
render() {
return (
<View>
<View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
<View style={{width: 100, height: 100, backgroundColor: 'skyblue'}} />
<View style={{width: 150, height: 150, backgroundColor: 'steelblue'}} />
</View>
);
}
};
AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);
Setting dimensions this way is common for components that should always render at exactly the same size, regardless of screen dimensions.
Flex Dimensions
Use flex
in a component's style to have the component expand and shrink dynamically based on available space. Normally you will use flex: 1
, which tells a component to fill all available space, shared evenly amongst each other component with the same parent. The larger the flex
given, the higher the ratio of space a component will take compared to its siblings.
A component can only expand to fill available space if its parent has dimensions greater than 0. If a parent does not have either a fixed
width
andheight
orflex
, the parent will have dimensions of 0 and theflex
children will not be visible.
import React from 'react';
import { AppRegistry, View } from 'react-native';
class AwesomeProject {
render() {
return (
// Try removing the `flex: 1` on the parent View.
// The parent will not have dimensions, so the children can't expand.
// What if you add `height: 300` instead of `flex: 1`?
<View style={{flex: 1}}>
<View style={{flex: 1, backgroundColor: 'powderblue'}} />
<View style={{flex: 2, backgroundColor: 'skyblue'}} />
<View style={{flex: 3, backgroundColor: 'steelblue'}} />
</View>
);
}
};
AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);