小编典典

你怎么能浮动:就在 React Native 中?

all

例如,我有一个想要向右浮动的元素

<View style={{width: 300}}>
  <Text style={{backgroundColor: "#DDD"}}>Hello</Text>
</View>

如何Text浮动/向右对齐?另外,为什么Text占用了整个空间View,而不仅仅是“Hello”的空间?


阅读 103

收藏
2022-06-24

共1个答案

小编典典

为什么 Text 占据了 View 的全部空间,而不仅仅是“Hello”的空间?

因为View是一个 flex 容器并且默认情况下有flexDirection: 'column'and alignItems: 'stretch',这意味着它的孩子应该被拉伸以填充它的宽度。

(请注意,根据文档, React Native 中的 所有 组件都是display: 'flex'默认的,display: 'inline'根本不存在。这样,React Native中 aText内的默认行为与网络上 a内的默认行为不同;在后一种情况下,span 不会
填满 the 的宽度,因为默认情况下 a 是一个内联元素。React Native 中没有这个概念。)View``span``div
__div``span

文本如何浮动/向右对齐?

floatReact Native
中不存在该属性,但您可以使用 大量 选项(行为略有不同),可以让您右对齐文本。以下是我能想到的:

1.[textAlign: 'right'](https://facebook.github.io/react-

native/docs/text-style-props.html#textalign)在Text元素上使用

<View>
  <Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>

(这种方法不会改变Text填充整个宽度的事实View;它只是右对齐 中的文本Text。)

2.使用[alignSelf: 'flex-end'](https://facebook.github.io/react-

native/docs/layout-props.html#alignself)在Text

<View>
  <Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>

Text会将元素缩小到容纳其内容所需的大小,并将其放在View.

3. 使用[alignItems: 'flex-end'](https://facebook.github.io/react-

native/docs/layout-props.html#alignitems)在View

<View style={{alignItems: 'flex-end'}}>
  <Text>Hello, World!</Text>
</View>

这相当于设置alignSelf: 'flex-end'所有View的孩子。

4.使用[flexDirection: 'row'](https://facebook.github.io/react-

native/docs/layout-props.html#flexdirection)和justifyContent: 'flex- end'View

<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
  <Text>Hello, World!</Text>
</View>

flexDirection: 'row'将布局的主要方向设置为水平而不是垂直;justifyContent就像alignItems,但控制主方向而不是交叉方向的对齐。

5. 使用[flexDirection: 'row'](https://facebook.github.io/react-

native/docs/layout-props.html#flexdirection)on theViewmarginLeft: 'auto'on theText

<View style={{flexDirection: 'row'}}>
  <Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>

在Web 和真实 CSS 的上下文中演示了这种方法。

6.使用[position: 'absolute'](https://facebook.github.io/react-

native/docs/layout-props.html#position)和:right: 0Text

<View>
  <Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>

就像在真正的 CSS
中一样,这需要Text“不流动”,这意味着它的兄弟姐妹将能够重叠它,并且View默认情况下它的垂直位置将在顶部(尽管您可以显式设置与顶部的距离)View使用top样式属性)。


自然,您想使用这些不同方法中的哪一种——以及它们之间的选择是否重要——将取决于您的具体情况。

2022-06-24