web-dev-qa-db-ja.com

水平フラットリストの前後の間隔(React Native)

周囲にスペースがある水平方向のFlatListを作成しようとしています。リストのpaddingLeftで最初の間隔を正しくすることができましたが、リストのpaddingRightはその後にスペースを入れていないようです(最後までスクロールした場合) 、最後のアイテムが境界線に押し付けられます)。

これを実行してライブで試すことができるスナックがあります: https://snack.expo.io/@saadq/aW50cm

そして、これが私のコードです:

import * as React from 'react';
import { Text, View, FlatList, StyleSheet } from 'react-native';

const data = [{ key: 1 }, { key: 2 }, { key: 3 }, { key: 4 }];

class App extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <FlatList
          style={styles.flatList}
          horizontal
          data={data}
          renderItem={() => (
            <View style={styles.box}>
              <Text>Box</Text>
            </View>
          )}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
  },
  flatList: {
    marginTop: 100,
    paddingLeft: 15,
    paddingRight: 15, // THIS DOESN'T SEEM TO BE WORKING
    // marginRight: 15   I can't use marginRight because it cuts off the box with whitespace
  },
  box: {
    display: 'flex',
    justifyContent: 'center',
    alignItems: 'center',
    height: 50,
    width: 100,
    borderWidth: 1,
    borderColor: 'black',
    paddingHorizontal: 15,
    marginRight: 15,
  },
});

export default App;

marginRightの代わりにpaddingRightを使用すると、期待される間隔の結果が得られるように見えますが、空白が常に存在し、スクロール時にアイテムが途切れるという別の問題が発生します。どんな助けでもいただければ幸いです!

4
saadq

contentContainerStyle小道具を直接渡す代わりに、FlatListstyle小道具を使用することで修正できたようです。

10
saadq

「ListFooterComponent」を使用できます。フラットリストの小道具であり、フラットリストとしての最後のコンポーネントとして機能します。したがって、たとえば15の幅の空のビューを渡して、適切なマージンを機能させることができます。これを試して:

<FlatList
      style={styles.flatList}
      horizontal
      data={data}
      renderItem={() => (
        <View style={styles.box}>
          <Text>Box</Text>
        </View>
      )}
      ListFooterComponent={<View style={{width:15}}></View>}

重要なコード行は次のとおりです。

ListFooterComponent={<View style={{width:15}}></View>
5
Nino9612
contentContainerStyle={{paddingBottom:xxx}} 
1
kamalesh biswas

FlatList、SectionList、ScrollViewのcontentInsetsは、contentInsetsプロパティを使用して調整できます。 https://facebook.github.io/react-native/docs/scrollview#contentinset

例えば。

<FlatList
  data={...}
  renderItem={...}
  horizontal={true}
  contentInset={{ right: 20, top: 0, left: 0, bottom: 0 }}

/>
0
Rody Molenaar