Большинство подобных проблем вызвано стилем, который применяется к окружающему виду или строке, которую вы пытаетесь визуализировать.
Если вы добавите marginHorizontal: 10
к styles.container
для строки, которая, вероятно, должна сделать это за вас.
Вот упрощенный пример, где края строки не обрезаются.Он имеет несколько настроек, чтобы заставить его работать, используя state.items
вместо props.items
и изменяя имя стиля для TodoItem на itemContainer
.Это должно дать вам представление о том, как его реализовать.
import * as React from 'react';
import { Text, View, StyleSheet, FlatList } from 'react-native';
import { Constants } from 'expo';
export default class App extends React.Component {
state = {
items: [
'Hello'
]
}
render() {
return (
<View style={styles.container}>
<FlatList
data={this.state.items}
renderItem={(item) => <TodoItem key={item.index} text={item.item} />}
/>
</View>
);
}
}
class TodoItem extends React.Component {
render() {
return (
<View style={styles.itemContainer}>
<Text style={styles.text}> {this.props.text} </Text>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
paddingTop: Constants.statusBarHeight + 10,
backgroundColor: '#ecf0f1',
},
itemContainer: {
marginHorizontal: 10,
height: 60,
backgroundColor: 'white',
borderRadius: 10,
shadowColor: '#000',
shadowOffset: { width: 2, height: 2 },
shadowOpacity: 0.4,
shadowRadius: 2,
elevation: 3,
justifyContent: 'center',
paddingHorizontal: 30,
marginBottom: 12
},
text: {
fontSize: 18,
fontWeight: '400',
color: '#080808'
}
});
Вот закуска, демонстрирующая его работу https://snack.expo.io/@andypandy/flatlist-with-elevation-on-rows