【React Native】ScrollView内の要素を上下左右中央寄せする

React Native でアプリを開発する際、ページの要素を画面の上下左右中央寄せで表示したいけど、文字入力でソフトウェアキーボードが表示されたときには画面をスクロールさせたい!ということを行ったので、その対処方法をまとめ。
ちなみに、ログインページで実装しました。

参考にさせていただいた記事はこちらから。

scrollview — React Native:ScrollView使用時の垂直方向のセンタリング
https://www.it-swarm-ja.tech/ja/scrollview/react-native:scrollview使用時の垂直方向のセンタリング/1055334241/amp/

ちょっと日本語がおかしいですが、そこはお気になさらず…。

 

さて、実装方法は下記のとおりです。

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  scroll: {
    justifyContent: 'center',
    flexGrow: 1,
  },
});

render の return は下記のように記述しています。

<SafeAreaView style={styles.container}>
  <ScrollView contentContainerStyle={styles.scroll}>
    <View>
      {/* 表示したい要素 */}
    </View>
  </ScrollView>
</SafeAreaView>

ポイントは、stylesscroll に指定した flexGrow: 1 です。
flexGrow は「フレックスコンテナの主軸の幅に余白がある場合の、フレックスアイテムの伸び率」とのことですが…いまいち意味はよく分かっていません…。
時間を見つけてこれから理解したいと思います…。

なお、こちらのコードですが、まだ Android でしか正常に動作することを確認しておりません。
もしかしたら、iOS では期待した通りに動作しない可能性もあるのでご注意ください。
私はこれから確認します!

 

以上、React Native で開発しているアプリで、ScrollView 内の要素を上下左右中央寄せする方法でした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG