React Native elevation StyleSheet 在 FlatList 中不起作用
React Native elevation StyleSheet not working in FlatList
我正在尝试在 FlatList 中设置我的 renderItem 的样式,但高度无法正常工作。有什么我错了或者这是 React Native 的问题吗?
我也测试了 ListView,但它仍然无法正常工作
这是 TodoItem 组件
import React, { Component } from 'react'
import { Text, View, StyleSheet } from 'react-native'
const styles = StyleSheet.create({
container: {
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'
}
})
export default class TodoItem extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}> {this.props.text} </Text>
</View>
)
}
}
这就是我在 FlatList 中调用它的地方
<FlatList
data={this.props.items}
renderItem={(item) => <TodoItem key={item.index} text={item.item} />}
/>
要点是,如果我不这样使用 FlatList,海拔会正常工作
<TodoItem text="Hello world" />
What I excepted
What I see
大多数此类问题是由应用于周围视图或您尝试呈现的行的样式引起的。
如果您将 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
有余量 属性 给我带来了问题,所以更改了 属性 并将其放在最后。
第一个密码
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',},
content:{
flex:1,
padding: 40,
backgroundColor:'pink',
},
list: {
marginTop: 20,
flex:1,
backgroundColor:'yellow',
},});
新代码
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',},
content:{
flex:1,
padding: 40,
backgroundColor:'pink',
},
list: {
flex:1,
backgroundColor:'yellow',
marginTop: 20,
},});
如果有人能澄清它为什么会发生。
我正在尝试在 FlatList 中设置我的 renderItem 的样式,但高度无法正常工作。有什么我错了或者这是 React Native 的问题吗?
我也测试了 ListView,但它仍然无法正常工作
这是 TodoItem 组件
import React, { Component } from 'react'
import { Text, View, StyleSheet } from 'react-native'
const styles = StyleSheet.create({
container: {
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'
}
})
export default class TodoItem extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text}> {this.props.text} </Text>
</View>
)
}
}
这就是我在 FlatList 中调用它的地方
<FlatList
data={this.props.items}
renderItem={(item) => <TodoItem key={item.index} text={item.item} />}
/>
要点是,如果我不这样使用 FlatList,海拔会正常工作
<TodoItem text="Hello world" />
What I excepted What I see
大多数此类问题是由应用于周围视图或您尝试呈现的行的样式引起的。
如果您将 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
有余量 属性 给我带来了问题,所以更改了 属性 并将其放在最后。
第一个密码
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',},
content:{
flex:1,
padding: 40,
backgroundColor:'pink',
},
list: {
marginTop: 20,
flex:1,
backgroundColor:'yellow',
},});
新代码
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',},
content:{
flex:1,
padding: 40,
backgroundColor:'pink',
},
list: {
flex:1,
backgroundColor:'yellow',
marginTop: 20,
},});
如果有人能澄清它为什么会发生。