周囲にスペースがある水平方向の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
を使用すると、期待される間隔の結果が得られるように見えますが、空白が常に存在し、スクロール時にアイテムが途切れるという別の問題が発生します。どんな助けでもいただければ幸いです!
contentContainerStyle
小道具を直接渡す代わりに、FlatList
でstyle
小道具を使用することで修正できたようです。
「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>
contentContainerStyle={{paddingBottom:xxx}}
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 }}
/>