React Native Listview 离开 space
React Native Listview leaving space
我正在尝试在 React Native 中实现一个列表视图。当我只是调用组件 Accounts
时一切都很好,但是由于我将它放入 NavigatorIOS 中,Listview 在第一个项目之前留下了一些 space :参见 here and when I scroll 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'
},
})
有谁知道发生了什么事吗?谢谢
好的,我找到了答案,我 post 在这里为 运行 遇到相同问题的任何人提供答案。
已在 Github here 上 post 编辑了一个问题。
有必要向 ListView
添加参数 automaticallyAdjustContentInsets={false}
。
问题已解决。
这仅在您拥有带有 TabBarIOS 的 ScrollView 或 ListView 时才会发生。如果你把 automaticallyAdjustContentInsets={false}
放在顶部,你可以删除多余的 space
但是,ScrollView 不会完全显示,因为它的底部会隐藏在 TabBarIOS 下。要解决此问题,请添加 contentInset={{bottom:49}}
根据您的需要调整高度。
代码如下:
<ListView
contentInset={{bottom:49}}
automaticallyAdjustContentInsets={false}
>
如果你想在 android 中实现这个..contentInset 是 iOS 特定的,要在 android 上管理它你需要在里面设置 属性共 <ListView contentContainerStyle={styles.contentContainer}>
</ListView>
然后在你的 stylesheets.create
var styles = StyleSheet.create({
contentContainer: {
paddingBottom: 100
}
* 我意识到 op 正在寻求一个 iOS 解决方案,只是为路过的人添加 android 解决方案,如果 op 决定他厌倦了 iOS
我正在尝试在 React Native 中实现一个列表视图。当我只是调用组件 Accounts
时一切都很好,但是由于我将它放入 NavigatorIOS 中,Listview 在第一个项目之前留下了一些 space :参见 here and when I scroll 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'
},
})
有谁知道发生了什么事吗?谢谢
好的,我找到了答案,我 post 在这里为 运行 遇到相同问题的任何人提供答案。
已在 Github here 上 post 编辑了一个问题。
有必要向 ListView
添加参数 automaticallyAdjustContentInsets={false}
。
问题已解决。
这仅在您拥有带有 TabBarIOS 的 ScrollView 或 ListView 时才会发生。如果你把 automaticallyAdjustContentInsets={false}
但是,ScrollView 不会完全显示,因为它的底部会隐藏在 TabBarIOS 下。要解决此问题,请添加 contentInset={{bottom:49}}
根据您的需要调整高度。
代码如下:
<ListView
contentInset={{bottom:49}}
automaticallyAdjustContentInsets={false}
>
如果你想在 android 中实现这个..contentInset 是 iOS 特定的,要在 android 上管理它你需要在里面设置 属性共 <ListView contentContainerStyle={styles.contentContainer}>
</ListView>
然后在你的 stylesheets.create
var styles = StyleSheet.create({
contentContainer: {
paddingBottom: 100
}
* 我意识到 op 正在寻求一个 iOS 解决方案,只是为路过的人添加 android 解决方案,如果 op 决定他厌倦了 iOS