我试图在React Native中实现listview。当我刚刚调用组件Accounts
时,一切都很好但是因为我将它放入NavigatorIOS,Listview在第一个项目之前留下了一些空格:请参阅here以及滚动here时。
这是我的代码:
index.ios.js
var RemoteX1 = React.createClass({
render: function() {
return (
<NavigatorIOS
style={styles.container}
initialRoute={{
title: 'Accounts',
component: Accounts,
}}/>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
},
});
accounts.js
var people = [
{
title: "Papa",
favouriteChannels: []
},
{
title: "Maman",
favouriteChannels: []
},
{
title: "Kids",
favouriteChannels: []
},
{
title: "Invité",
favouriteChannels: []
}
];
var Accounts = React.createClass({
getInitialState: function() {
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
return {
dataSource: ds.cloneWithRows(people),
}
},
renderRow: function(person) {
return (
<TouchableHighlight onPress={this.onPressRow}>
<Text style={styles.account}>{person.title}</Text>
</TouchableHighlight>
);
},
render: function() {
return (
<View style={styles.container}>
<View style={styles.panel}>
<Text style={styles.icon}></Text>
<Text style={styles.welcome}>BIENVENUE</Text>
<ListView
dataSource={this.state.dataSource}
renderRow={this.renderRow}
style={styles.listView} />
</View>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center'
},
panel: {
backgroundColor: '#67F072',
alignItems: 'center',
justifyContent: 'center',
paddingLeft: 50,
paddingRight: 50,
},
icon: {
color: '#67B7F0',
fontFamily: 'CanalDemiRomainG7',
fontSize: 40
},
welcome: {
color: '#67B7F0',
fontFamily: 'CanalDemiRomainG7'
},
account: {
color: '#000000',
height: 30,
alignSelf: 'center',
fontFamily: 'CanalDemiRomainG7'
},
})
有没有人知道发生了什么?感谢
答案 0 :(得分:87)
好的,我找到了答案,我在这里发布给遇到同样问题的人。
Github上发布了一个问题here。
有必要添加ListView
参数automaticallyAdjustContentInsets={false}
。
解决了问题。
答案 1 :(得分:32)
仅当您使用带有TabBarIOS的ScrollView或ListView时才会发生这种情况。如果放置automaticallyAdjustContentInsets={false}
但是,ScrollView不会完全显示,因为它的底部将隐藏在TabBarIOS下。要解决此问题,请根据需要调整高度contentInset={{bottom:49}}
。
这是代码:
<ListView
contentInset={{bottom:49}}
automaticallyAdjustContentInsets={false}
>
答案 2 :(得分:8)
如果你想在android..contentInset中实现这一点是特定于iOS的,要在android上管理这个,你需要在<ListView contentContainerStyle={styles.contentContainer}>
</ListView>
然后在你的stylesheets.create
中var styles = StyleSheet.create({
contentContainer: {
paddingBottom: 100
}
*我意识到操作系统正在寻求iOS解决方案,只需为人们传递安卓解决方案,如果操作决定他已经厌倦了iOS