텍스트에 줄임표 효과를 적용하는 방법


140

내 앱에 긴 텍스트가 있는데 잘라 내고 끝에 세 개의 점을 추가해야합니다.

React Native Text 요소에서 어떻게 할 수 있습니까?

감사


1
당신은 완벽한 대답을 받았습니다. 받아 들여야할까요?
Moss Palmer

답변:


32

numberOfLines 사용

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

또는 행당 최대 문자 수를 알고 있거나 계산할 수있는 경우 JS 하위 문자열을 사용할 수 있습니다.

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

85
그것은 해결책이 아닙니다. 텍스트는 가변 너비입니다.
Marc

2
Text 요소의 컨테이너에 Flex 값 (I 사용, 1)이있는 한 텍스트는 컨테이너 내에서 잘립니다. 그래서 @Rahul Chaudhari의 대답은 그것을하는 방법입니다.
fostertime

numberOfLines = {1}
mayaa

1
제공된 링크가 끊어졌으며 해결책은 다른 답변에서 설명하는 react-native의 내장 지원을 사용하는 것입니다.
Tyler

406

구성 요소 에서 numberOfLines매개 변수를 사용하십시오 Text.

<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

참고 :Text 구성 요소도 포함해야 style={{ flex: 1 }}줄임표는 컨테이너의 크기에 적용 상대해야 할 때. 행 레이아웃 등에 유용합니다.


19
분명하지 않을 수도 있고 텍스트에도 너비를 지정해야합니다.
Sten Muchow 2011

흥미로운 질문은 : 라인 수를 어떻게 계산합니까? 나는 아무도 그것을 미리 알지 못한다고 생각하기 때문에 (정적 일 이유가 없기 때문에).
cglacet 17.05.05

1
좋은 대답이지만 CSS 줄임표와 같은 동작을 원하면 ellipsizeMode = 'tail'을 사용해야 합니다.
Andrey Patseiko

@RanYefet이 답변을 올바른 답변으로 표시하는 것을 고려해야합니다. 다른 사람에게 도움이 될 것입니다. 감사합니다!
Balthazar 2018

@Goutham 가장 가까운 것은 ellipsizeMode가 중간으로 설정된 것입니다.
Henrik Hansen

65

ellipsizeMode 및 numberOfLines를 사용할 수 있습니다. 예 :

<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


3
Text 요소의 컨테이너에 Flex 값 (I 사용, 1)이있는 한 텍스트는 컨테이너 내에서 잘립니다.
fostertime

3
ellipsizeMode = 'tail'은 'tail'이 ellipsizeMode의 기본값이므로 필요하지 않습니다. 텍스트 시작 부분에 타원을 표시하지 않으려면 numberOfLines prop 만 사용할 수 있으며 작동합니다.
Karan Bhutwala

17
<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>

0
<Text ellipsizeMode='tail' numberOfLines={2} style={{width:100}}>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at cursus 
</Text>

결과: Lorem ipsum...


-10

const styles = theme => ({
 contentClass:{
    overflow: 'hidden',
    textOverflow: 'ellipsis',
    display: '-webkit-box',
    WebkitLineClamp:1,
    WebkitBoxOrient:'vertical'
 }   
})
render () {
  return(
    <div className={classes.contentClass}>
      {'content'}
    </div>
  )
}


1
문제는 React Native에 관한 것입니다. 여기서 textOverflow는 유효한 소품이 아닙니다
Brian Nguyen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.