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>
ポイントは、styles の scroll に指定した flexGrow: 1 です。
flexGrow は「フレックスコンテナの主軸の幅に余白がある場合の、フレックスアイテムの伸び率」とのことですが…いまいち意味はよく分かっていません…。
時間を見つけてこれから理解したいと思います…。
なお、こちらのコードですが、まだ Android でしか正常に動作することを確認しておりません。
もしかしたら、iOS では期待した通りに動作しない可能性もあるのでご注意ください。
私はこれから確認します!
以上、React Native で開発しているアプリで、ScrollView 内の要素を上下左右中央寄せする方法でした。
ご参考になれば幸いです。
 
					         
               
                       
						
						 
                