Ответ 1
Итак, я нашел ответ, я разместил его здесь для всех, кто сталкивался с тем же вопросом.
В Github здесь была опубликована проблема.
Необходимо добавить к ListView
параметр automaticallyAdjustContentInsets={false}
.
Проблема решена.
Я пытаюсь реализовать listview в React Native. Все было нормально, когда я просто вызывал компонент Accounts
, но поскольку я помещал его в NavigatorIOS, Listview оставляет некоторое пространство перед первым элементом: см. здесь и когда Я прокручиваю здесь.
Вот мой код:
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'
},
})
Кто-нибудь знает, что происходит? Благодаря
Итак, я нашел ответ, я разместил его здесь для всех, кто сталкивался с тем же вопросом.
В Github здесь была опубликована проблема.
Необходимо добавить к ListView
параметр automaticallyAdjustContentInsets={false}
.
Проблема решена.
Это происходит только тогда, когда у вас есть ScrollView или ListView с TabBarIOS. Вы можете удалить дополнительное пространство в верхней части, если вы положили 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 для людей, и если оп решает, что он устал от iOS