我的应用程序中有一个长文本,我需要将其截断并在末尾添加三个点。
如何在React Native Text元素中执行此操作?
由于
答案 0 :(得分:222)
Text
组件上使用numberOfLines
参数:<Text numberOfLines={1}>long long long long text<Text>
将产生:
long long long…
(假设您有宽度较短的容器。)
ellipsizeMode
参数将省略号移至head
或middle
。 tail
是默认值。<Text numberOfLines={1} ellipsizeMode='head'}>long long long long text<Text>
将产生:
…long long text
答案 1 :(得分:33)
您可以使用ellipsizeMode和numberOfLines。 e.g
<Text ellipsizeMode='tail' numberOfLines={2}>
This very long text should be truncated with dots in the beginning.
</Text>
答案 2 :(得分:26)
使用numberOfLines
https://rnplay.org/plays/ImmKkA/edit
或者如果您知道/或可以计算每行的最大字符数,则可以使用JS子字符串。
<Text>{ ((mytextvar).length > maxlimit) ?
(((mytextvar).substring(0,maxlimit-3)) + '...') :
mytextvar }
</Text>
答案 3 :(得分:2)
<Text ellipsizeMode='tail' numberOfLines={2} style={{width:100}}>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at cursus
</Text>
结果:Lorem ipsum...
答案 4 :(得分:1)
<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>
答案 5 :(得分:0)
要获得文本的省略号,请使用文本属性numberofLines = {1},该属性将自动用省略号截断文本,您可以将ellipsizeMode指定为“ head”,“ middle”,“ tail”或“ clip” 默认情况下为tail
答案 6 :(得分:-4)
const styles = theme => ({
contentClass:{
overflow: 'hidden',
textOverflow: 'ellipsis',
display: '-webkit-box',
WebkitLineClamp:1,
WebkitBoxOrient:'vertical'
}
})
render () {
return(
<div className={classes.contentClass}>
{'content'}
</div>
)
}