我想创建一个ListView,每行应该包含一个Icon和一个Text。但我需要它们垂直对齐。
代码:
export default class SettingsPage extends Component {
constructor() {
super();
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
dataSource: ds.cloneWithRows([
{
iconName: 'bell',
title: 'bell'
},
{
iconName: 'map-marker',
title: 'map'
},
]),
};
}
_renderRow(rowData) {
return (
<View style={{borderBottomWidth:1, padding:20}}>
<Text>
<Icon name={rowData.iconName} size={40}/>
<Text style={{fontSize:25}}> {rowData.title}</Text>
</Text>
</View>
);
}
render() {
return (
<ListView
dataSource={this.state.dataSource}
renderRow={this._renderRow}
/>
);
}
}
以上代码生成:
组件未对齐。
我该如何解决这个问题?
答案 0 :(得分:2)
尝试这样的事情:
_renderRow(rowData) {
return (
<View style={{borderBottomWidth:1, padding:20, flex: 1, flexDirection: 'row'}}>
<View style={{flex: 1}}>
<Icon name={rowData.iconName} size={40}/>
</View>
<View style={{flex: 5}}>
<Text style={{fontSize:25}}> {rowData.title}</Text>
</View>
</View>
);
}
根据自己的喜好调整包裹文本元素的<View>
的flex值,以获得更多结果。