Android (안드로이드)

[Android] 텍스트 ... 표시 / 텍스트 말줄임 표시

Oscar:) 2024. 12. 28. 18:19
728x90

 

 

 

화면에 너무 긴 텍스트가 담길 때 종종 말줄임 표시가 필요하곤 하다.

오늘은 텍스트에 말줄임 표시(...)를 적용해본다.

 

 

 

 


 

 

 

✅ 글자 수를 지정할 때

 

정해진 글자 수를 넘어가면 말줄임 표시를 적용하는 방법이다.

 

 

위와 같은 10개의 텍스트가 존재한다고 가정했을 때,

5까지만 표시하고 그 뒤의 텍스트는 ... 표시해보자.

 

bind.textview.apply {
  text = text.substring(0, 5) + "..."
}

 

substring() 뿐만 아니라 take(), split(), charAt() 등 방법은 다양하다.

문자열을 자르는 방법은 각자 취향껏 적용하면 된다.

 

 

 

 

 

 

결과적으로는 말줄임(...) 적용에 성공했다.

 

하지만 위 방법으로는 글자 수가 고정적이지 않고 변동되는 상황 등,

조건문 분기 처리를 해야하는 경우에 매우 번거로워질 수 있다.

 

 

 

 

 

 

✅ 영역 기준으로 자동 적용 - ellipsize

 

지정된 글자 수를 기준으로 말줄임 처리를 하는 것이 번거롭다면,

지정된 영역을 기준으로 말줄임 처리를 자동 적용해보자.

 

 

 

대충 다음과 같은 속성의 TextView를 만들어준다.

<TextView
  android:layout_width="match_parent"
  android:layout_width="wrap_content"
  android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  android:maxLines="1"
  ...
/>

 

 

A~Z 까지 출력했지만 Y, Z 가 짤린 모습이다.

 

 

 

 

 

이 상태에서 ellipsize 속성을 추가해준다.

<TextView
  ...
  android:ellipsize="end"
/>

 

ellipsize 속성을 end로 지정한다.

 

 

 

 

 

 

영역을 넘어가는 부분부터 자동으로 말줄임 표시(...)가 적용되었다.

 

 

 

 

 

영역을 기준으로 자동 적용되기 때문에 상당히 편리하다.

예를 들어, 좌우로 Margin을 적용한 경우에는

 

 

위 처럼 좌우 Margin이 적용된 지정된 영역 내에서 말줄임 표시가 적용된다.

 

 

 

 

 

android:maxLines="2"

 

ellipsize="end" 속성은 유지한 채, 위 처럼 줄 수만 변경하면

 

 

마지막 줄의 끝부분에서 말줄임 표시가 적용된다.

 

 

 

 

 

 

🎈 앞 부분에 말줄임 표시 적용

 

android:ellipsize="start"

 

 

 

 

 

 

 

🎈 중앙에 말줄임 표시 적용

 

android:ellipsize="middle"

 

 

 

 

 

 


 

 

 

 

안드로이드 환경에서 텍스트는 되도록 sp 사용을 권장한다.

 

하지만 sp는 사용자가 기기에 설정한 텍스트 크기가 적용되기 때문에,

개발자가 의도한 텍스트의 범위대로 표현되지 않을 때가 많다.

 

그렇기 때문에 사소한 텍스트라도 줄 수를 넘어가지 않는지,

텍스트뷰의 범위를 벗어나지는 않는지 등을 체크해줘야 한다.

 

그리고 이러한 상황에서 말줄임 처리를 유용하게 사용하곤 한다.

 

 

 

728x90