如何对文本进行省略号效果

Ran*_*fet 93 ellipsis react-native

我的应用程序中有一个很长的文本,我需要截断它并在末尾添加三个点.

我怎么能在React Native Text元素中做到这一点?

谢谢

小智 277

numberOfLinesText组件上使用参数:

<Text numberOfLines={1}>long long long long text<Text>
Run Code Online (Sandbox Code Playgroud)

会产生:

long long long…
Run Code Online (Sandbox Code Playgroud)

(假设您有短宽度的容器.)


使用该ellipsizeMode参数将省略号移动到headmiddle.tail是默认值.

<Text numberOfLines={1} ellipsizeMode='head'}>long long long long text<Text>
Run Code Online (Sandbox Code Playgroud)

会产生:

…long long text
Run Code Online (Sandbox Code Playgroud)

  • 也许显而易见也许不是,需要在Text上指定宽度. (10认同)
  • 很好的答案,但如果想要像 css 省略号一样的行为,需要使用 **ellipsizeMode='tail'**。 (2认同)

Rah*_*ari 49

您可以使用ellipsizeMode和numberOfLines.例如

<Text ellipsizeMode='tail' numberOfLines={2}>
  This very long text should be truncated with dots in the beginning.
</Text>
Run Code Online (Sandbox Code Playgroud)

https://facebook.github.io/react-native/docs/text.html

  • 只要Text元素的容器具有Flex值(我使用,1),文本就会在容器中被截断. (3认同)
  • ellipsizeMode ='tail'不需要,因为'tail'是ellipsizeMode的默认值.除非您想在文本的开头显示椭圆,否则您只能使用numberOfLines prop,它应该可以工作. (3认同)

bor*_*mes 29

使用numberOfLines

https://rnplay.org/plays/ImmKkA/edit

或者如果您知道/或可以计算每行的最大字符数,则可以使用JS子字符串.

<Text>{ ((mytextvar).length > maxlimit) ? 
    (((mytextvar).substring(0,maxlimit-3)) + '...') : 
    mytextvar }
</Text>
Run Code Online (Sandbox Code Playgroud)

  • 那不是解决方案.文字是可变宽度. (55认同)
  • 只要Text元素的容器有一个Flex值(我用的是1),容器内的文本就会被截断。所以@Rahul Chaudhari 的答案就是这样做的方法。 (4认同)
  • 行数={1} (2认同)
  • 提供的链接已损坏,解决方案应该是使用 react-native 对此的内置支持,这在其他答案中进行了解释。 (2认同)

小智 6

<Text ellipsizeMode='tail' numberOfLines={2} style={{width:100}}>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at cursus 
</Text>
Run Code Online (Sandbox Code Playgroud)

箱内结果:


<-- width = 100-->
 -----------------
| Lorem ipsum     |
| dolar sit a...  |
 -----------------
Run Code Online (Sandbox Code Playgroud)


Moe*_*ini 5

<View 
   style={{
        flexDirection: 'row',
        padding: 10,
    }}
>
  <Text numberOfLines={5} style={{flex:1}}>
       This is a very long text that will overflow on a small device This is a very 
       long text that will overflow on a small deviceThis is a very long text that 
       will overflow on a small deviceThis is a very long text that will overflow 
       on a small device
  </Text>
</View>
Run Code Online (Sandbox Code Playgroud)