Answers:
为什么文本会占用视图的全部空间,而不仅仅是“ Hello”的空间?
因为View
是一个Flex容器,默认情况下具有flexDirection: 'column'
和alignItems: 'stretch'
,这意味着应将其子级拉伸以填充其宽度。
(请注意,根据docs,React Native中的所有组件都是display: 'flex'
默认组件,并且display: 'inline'
根本不存在。这样,React Native中的Text
a组件View
的默认行为与网络上的span
a组件的默认行为有所不同div
;在后一种情况下,跨度不会填充的宽度,div
因为span
默认情况下a 是内联元素。ReactNative中没有这样的概念。)
文本如何浮动/向右对齐?
该float
属性不存在在本地做出反应,但也有负载可用的选项,您(的行为稍有不同),可以让你右对齐文本。这是我能想到的:
textAlign: 'right'
在Text
元素上使用<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(此方法不会更改Text
填充整个宽度的事实View
;它只是将内的文本右对齐Text
。)
alignSelf: 'flex-end'
在Text
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
这Text
会将元素缩小到保留其内容所需的大小,并将其放置在的横向(默认为水平方向)的末端View
。
alignItems: 'flex-end'
在View
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
这等效于设置alignSelf: 'flex-end'
所有View
的孩子。
flexDirection: 'row'
和justifyContent: 'flex-end'
View
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row'
将布局的主要方向设置为水平而不是垂直;justifyContent
就像alignItems
,但是控制的方向是沿主方向而不是横向对齐。
flexDirection: 'row'
在View
和marginLeft: 'auto'
上使用Text
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
在Web和真实CSS的上下文中,通过https://stackoverflow.com/a/34063808/1709587演示了这种方法。
position: 'absolute'
和:right: 0
Text
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
就像在实际CSS中一样,这需要Text
“流出”,这意味着其兄弟姐妹将能够重叠它,并且其垂直位置View
默认情况下将位于顶部(尽管您可以显式设置距顶部的距离)View
使用top
样式属性)。
当然,您要使用这些各种方法中的哪一种-以及它们之间的选择是否也很重要-将取决于您的具体情况。
<Text><Text>FLOAT TEXT</Text>multi line text here which wraps around float text
。这样的:<View><Text><Image />multi line text which wrap around float image</Text>
。
<View style={{ flex: 1, flexDirection: 'row', justifyContent: 'flex-end' }}>
<Text>
Some Text
</Text>
</View>
flexDirection
:如果要水平移动(行)或垂直移动(列)
justifyContent
:您要移动的方向。
justifyContent
本身不选择方向;它提供了许多关于沿主弯曲方向放置和间隔事物的选项。
您可以在flex本机中使用float进行右对齐:
<View style={{flex: 1, flexDirection: 'row'}}>
<View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
<View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
<View style={{width: 50, height: 50, backgroundColor: 'steelblue'}} />
</View>
有关更多详细信息:https : //facebook.github.io/react-native/docs/flexbox.html#flex-direction
justifyContent
,alignItems
,alignSelf
。我想知道哪个是正确的。