ScrollView の下部に View を配置するにはどうすればよいでしょうか? 質問する

ScrollView の下部に View を配置するにはどうすればよいでしょうか? 質問する

いくつかの入力フィールドを含むScrollViewと、画面の下部にあるボタン(実際には通常のViewの2つのボタン)を備えた画面を作成したいと思います。これはかなり簡単なはずですが、ボタンを画面の一番下に配置したいScrollView に画面全体を埋めるのに十分な要素がない場合でも、ボタンは表示されます。絶対位置指定を使用することもできますが、ScrollView は画面よりも大きく (高く) なる可能性があり、この場合、ボタンは ScrollView の最後に配置する必要があります (つまり、ボタンは画面から外れるため、ユーザーはボタンを見るために下にスクロールする必要があります)。

いろいろ試してみましたが、ボタンは常に ScollView 内の他の要素のすぐ後に表示されます。

画像では、スクロールビューには青い境界線があり、ボタンを含む通常のビューには黒い境界線があります。

どのようなご提案でも歓迎いたします。

ここに画像の説明を入力してください

ベストアンサー1

最善の解決策を見つけました。

鍵となるのはコンテンツコンテナスタイルプロパティ (ドキュメント:https://facebook.github.io/react-native/docs/scrollview#contentcontainerstyle)。「これらのスタイルは、すべての子ビューをラップするスクロール ビュー コンテンツ コンテナーに適用されます。」

設定後flexGrow: 1、justifyContent: 'space-between'、flexDirection: 'column'contentContainerStyleでは、justifyContent: 'flex-start'テキストを含む上部のコンテナビュー、およびjustifyContent: 'flex-end'ボタン付きの下部コンテナー ビュー用。

<ScrollView
  contentContainerStyle={{ flexGrow: 1, justifyContent: 'space-between', flexDirection: 'column' }}
  style={{ backgroundColor: 'white', paddingBottom: 20 }}
>
  <View style={{ flex: 1, justifyContent: 'flex-start' }}>
    <Text>Some text with different length in different cases, or some input fileds.</Text>
  </View>
  <View style={{ flex: 1, justifyContent: 'flex-end' }}>
    <View>
      <TouchableOpacity style={[commonStyles.greenButton, styles.buttonPadding]}>
        <Text style={commonStyles.greenButtonTitle}>Next</Text>
      </TouchableOpacity>
    </View>
    <View>
      <TouchableOpacity style={styles.cancelButtonContainer}>
        <Text style={styles.cancelButton}>Cancel</Text>
      </TouchableOpacity>
    </View>
  </View>
</ScrollView>;

おすすめ記事