为什么 Text 占据了 View 的全部空间,而不仅仅是“Hello”的空间?
因为View 是一个弹性容器,默认情况下有flexDirection: 'column' 和alignItems: 'stretch',这意味着它的子元素应该被拉伸以填充它的宽度。
(注意,根据the docs,React Native 中的所有 组件默认为display: 'flex',而display: 'inline' 根本不存在。这样,a 的默认行为在 React Native 中 View 内的 Text 与网络上 div 内 span 的默认行为不同;在后一种情况下,跨度将不会填充div 因为 span 默认是内联元素,React Native 中没有这个概念。)
文本如何浮动/向右对齐?
float 属性在 React Native 中不存在,但有加载可供您使用的选项(行为略有不同)可以让您右对齐文本。以下是我能想到的:
<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(这种方法不会改变Text 填充View 的整个宽度的事实;它只是将Text 中的文本右对齐。)
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
这会将Text 元素缩小到容纳其内容所需的大小,并将其放在View 的横向(默认为水平方向)的末端。
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
这相当于在所有View 的孩子上设置alignSelf: 'flex-end'。
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row' 将布局的主方向设置为水平而不是垂直; justifyContent 与 alignItems 类似,但控制主方向而不是交叉方向的对齐方式。
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
这种方法在 Web 和真实 CSS 的上下文中进行了演示,地址为 https://stackoverflow.com/a/34063808/1709587。
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
就像在真正的 CSS 中一样,这会将 Text 设为“不流动”,这意味着它的兄弟姐妹将能够重叠它,并且默认情况下它的垂直位置将位于 View 的顶部(尽管您可以使用top 样式属性显式设置与View 顶部的距离。
当然,您想使用这些不同方法中的哪一种 - 以及它们之间的选择是否重要 - 将取决于您的具体情况。