问题
I'm having a long text in my app and I need to truncate it and add three dots to the end.
How can I do that in React Native Text element?
Thanks
回答1:
use numberOfLines
https://rnplay.org/plays/ImmKkA/edit
or if you know/or can compute the max character count per row, JS substring may be used.
<Text>{ ((mytextvar).length > maxlimit) ?
(((mytextvar).substring(0,maxlimit-3)) + '...') :
mytextvar }
</Text>
回答2:
Use the numberOfLines parameter on a Text
component:
<Text numberOfLines={1}>long long long long text<Text>
Will produce:
long long long…
(Assuming you have short width container.)
Use the ellipsizeMode parameter to move the ellipsis to the head
or middle
. tail
is the default value.
<Text numberOfLines={1} ellipsizeMode='head'}>long long long long text<Text>
Will produce:
…long long text
回答3:
You can use ellipsizeMode and numberOfLines. e.g
<Text ellipsizeMode='tail' numberOfLines={2}>
This very long text should be truncated with dots in the beginning.
</Text>
https://facebook.github.io/react-native/docs/text.html
回答4:
<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:
const styles = theme => ({
contentClass:{
overflow: 'hidden',
textOverflow: 'ellipsis',
display: '-webkit-box',
WebkitLineClamp:1,
WebkitBoxOrient:'vertical'
}
})
render () {
return(
<div className={classes.contentClass}>
{'content'}
</div>
)
}
来源:https://stackoverflow.com/questions/30594080/how-to-have-ellipsis-effect-on-text