CSSを使用してコンポーネントを画面に集中化するのは困難です。
私のApp.js
:
import { Container } from 'native-base';
import React from 'react';
import { StyleSheet } from 'react-native';
import Screen from './ScreenContainer';
const styles = StyleSheet.create({
container: {
backgroundColor: '#FF6666',
flex: 1
}
});
const App = () => (
<Provider store={store}>
<Container style={styles.container}>
<Screen />
</Container>
</Provider>
);
export default App;
今、私のScreenContainer.js
import { Container, Content, Form, Input, Label, Item } from 'native-base';
import React from 'react';
import AppLogo from '../components/AppLogo';
const Screen = () => (
<Container>
<Content>
<AppLogo />
<Form>
<Item floatingLabel last>
<Label>Username</Label>
<Input />
</Item>
</Form>
</Content>
</Container>
);
export default Screen;
このコードにより、次の画面が表示されます。
しかし、私は画面がこの形式のままであることを望みます:
次のコードを変更すると:
const styles = StyleSheet.create({
container: {
alignItems: 'center',
backgroundColor: '#FF6666',
flex: 1
}
});
私のアプリはこの画面を返します:
完了しました:
import { Container, Content, Form, Input, Label, Item } from 'native-base';
import React from 'react';
import { StyleSheet } from 'react-native';
import AppLogo from '../components/AppLogo';
const styles = StyleSheet.create({
container: {},
content: {
alignItems: 'center',
flex: 1,
justifyContent: 'center'
},
form: {
width: '100%'
},
item: {}
});
const Screen = () => (
<Container style={styles.container}>
<Content contentContainerStyle={styles.content}>
<AppLogo />
<Form style={styles.form}>
<Item floatingLabel last>
<Label>Username</Label>
<Input />
</Item>
</Form>
</Content>
</Container>
);
export default Screen;
ReactネイティブドキュメントのLayout with Flexboxページに目を通すことをお勧めします。これにより、探しているものをどのように実現するかについてのより良いアイデアが得られます。
私が参照したReactネイティブFlexboxドキュメントにアクセスできます。 https://facebook.github.io/react-native/docs/flexbox.html
React Nativeでは、コンポーネントはflexboxアルゴリズムを使用してその子のレイアウトを指定できます。 Flexboxは、さまざまな画面サイズで一貫したレイアウトを提供するように設計されています。
CSSスタイルflex: 1;
およびalignItems: 'center';
を使用して、気づいているかどうかに関係なく、すでにFlexboxを少し使用しています。
React Nativeでは、Flexboxはデフォルトが異なることを除いてWebと同じように機能し、flexDirectionのデフォルトは行ではなく列です。
このため、コンポーネントのスタイルにalignItems
ルールを使用して、セカンダリ軸(垂直)に沿った子の配置を決定できます。
次のルールを子要素に追加すると、子要素は画面全体に表示されます。ただし、横長のレイアウトと大きな画面(タブレットなど)にはmax-width
を追加することを検討してください:
childSelector {
alignItems: stretch;
}
コンテナのコンテンツを水平および垂直の両方に中央揃えするには、次のスタイル設定ルールを適用します。
alignItems: 'center'
justifyContent: 'center'