alignItems:center防止React Native中的弹性行文本换行
alignItems: center prevents flex row text wrapping in React Native
出于某种原因,在容器视图的样式中设置alignItems: center
会导致弹性行内的文本停止换行,并且不尊重容器视图的padding
。
此处的工作示例和代码:https://rnplay.org/apps/FsDXuQ
我尝试按照建议将flexDirection设置为列,使用flex:1或flexWrap,但唯一有效的是从容器视图中删除alignItems: center
。
我不明白这里发生了什么。如果我想要:
- 行元素,不占用屏幕的整个宽度,
- 中心
- 里面有很长的文字,
- 哪些包装?
谢谢。
使用flex
属性。 例如<Text style={{ flex: 1}}>
我们在我的公司遇到了同样的问题,据我所知,没有非黑客的方法可以解决这个问题。
我们处理它的方法是从主容器中完全删除 alignItems 属性,并为容器提供一个 flex:1 属性。然后,我们使用alignItems:"center"到我们需要的任何子组件,而不会将样式扩展到所有子组件。
我已经设置了一个我在这里谈论的示例,并粘贴了下面的代码。
'use strict';
var React = require('react-native');
var {
AppRegistry,
Image,
StyleSheet,
Text,
View,
Dimensions
} = React;
var width = Dimensions.get('window').width
var shortText = "Lorem ipsum dolor sit amet, consectetur adipis.";
var longText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sollicitudin ligula ut leo dictum, id elementum sapien faucibus. Nullam et feugiat neque";
var SampleApp = React.createClass({
render: function() {
return (
<View style={styles.container}>
<View style={ styles.alignCenter }>
<Text>{shortText}</Text>
</View>
<Text/>
<View style={{ flexDirection: 'row', flexWrap: 'wrap' }}>
<Image source={{uri: "http://icons.iconarchive.com/icons/designbolts/free-male-avatars/128/Male-Avatar-icon.png"}} style={{height: 32, width: 32}}/>
<View style={{ flex:1 }}>
<Text >{longText}</Text>
</View>
</View>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
padding: 30,
marginTop: 65,
flexWrap: 'wrap',
flex:1
},
alignCenter: {
alignItems: 'center'
}
})
AppRegistry.registerComponent('SampleApp', () => SampleApp);
一直在自己搜索以解决此问题:
textStyle: {
textAlign: 'center',
}
本文提供:http://moduscreate.com/aligning-children-using-flexbox-in-react-native/
摆脱直接父级中的任何alignItems
,让flexWrap发生。
我发现我必须做的比@trik指示的多一点。
我还必须从容器(父组件)中删除 alignItems:"center"。
我还发现,如果我需要容器使用 alignItems:"center",那么我必须将子组件的宽度设置为足够大以容纳文本以及使用 textAlign:"center"。
这将使用类似于以下内容的样式:
import {StyleSheet} from 'react-native';
export default StyleSheet.create({
centeredParent: {
flex: 1,
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
},
centeredChild: {
width: '100%',
textAlign: 'center',
},
});
额外提示:如果将文本组件的背景设置为对比色,则可以看到文本组件的框。 这使得调试这些问题更容易。
- Internet Explorer中的文本换行错误
- 使用jQuery的输入字段文本换行
- 脚本图像获胜't用文本换行
- D3具有矩形和文本换行的水平树布局
- 标记内的文本换行
- 使用 jQuery 将文本换行在
标记内 - 如何在文本换行时在图像下方保留填充
- 溢出隐藏不会文本换行
- d3.js径向树布局可变节点长度/文本换行节点描述
- 如何手动管理HTML中的文本换行
- jQuery动画slidelleft没有文本换行
- 将文本换行到并由
使用jquery - 文本换行到列
- 如何在文本换行时减少字母间距
- 文本换行选项-建议
- 围绕span文本换行元素
- 在Polymer 1.0中带有绑定的文本换行元素
- Var文本换行或任何格式不工作
- 如何在javascript中拖动图像/元素时导致实时文本换行
- 使用 javascript/jquery 将带有强标签的文本区域中突出显示的文本换行