リストビューをReact Nativeで実装しようとしています。コンポーネントAccounts
を呼び出すだけで問題はありませんでしたが、NavigatorIOSに配置したため、リストビューは最初のアイテムの前にスペースを残しています。 : 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'
},
})
誰が何が起こっているのか知っていますか?ありがとう
わかりましたので、答えを見つけました。同じ問題に遭遇した人のためにここに投稿します。
Github here に問題が投稿されました。 ListView
にパラメーターautomaticallyAdjustContentInsets={false}
を追加する必要があります。問題が解決しました。
これは、TabBarIOSを備えたScrollViewまたはListViewがある場合にのみ発生します。 automaticallyAdjustContentInsets={false}
を入力すると、上部の余分なスペースを削除できます
ただし、ScrollViewの下部はTabBarIOSの下に隠れているため、ScrollViewは完全には表示されません。これを修正するには、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にうんざりしていると判断した場合