📱 Android

[Android/Kotlin] TextView 더 보기 기능

콩드로이드 2019. 9. 17. 17:03

TextView의 더 보기

 

TextView안의 text가 늘어날 경우 말줄임표처럼 표시하고,
내용을 펼쳤다가 접었다가 할 수 있는 기능을 구현해야합니다

나중에 또 쓸 일이 있을 것 같아서 정리해두고자 합니다

우선, TextView 2개를 사용해 하나는 text를 표시하고, 하나는 더보기를 표시하는 용도로 사용했습니다

text 표시 View : tvMsg

더보기 표시 View : tvMore


tvMsg의 MaxLine은 2로 정하고, ellipsized는 end로 지정했습니다.


그리고, tvMore은 tvMsg의 text가 MaxLine을 넘어설 경우에만 보이게 했습니다.

tvMsg가 ellipsized 상태인지 확인

MaxLine을 넘어섰을 경우를 확인하기 위해선, ellipsized의 상태인지 확인하면 됩니다
(ellipsized를 지정한 경우)

 

if (tvMsg.layout.getEllipsisCount(tvMsg.lineCount - 1) > 0) {
      tvMore.visibility = View.VISIBLE
  } else {
      tvMore.visibility = View.GONE
  }

 

ellipsized의 상태일 때 , tvMore을 클릭하면 text가 전부 표시

 

private fun readMore(view: TextView, text: String, maxLine: Int) {

           var expandText = text

           if (view.tag != null && view.tag.equals(text)) {
               return
           }
           view.tag = text
           view.text = text

           var h = Handler()
           h.postDelayed({
               if (view.lineCount >= maxLine) {
                   var lineEndIndex = view.layout.getLineVisibleEnd(maxLine - 1)
                   var split = text.split("\n")
                   var splitLength = 0
                   var lessText = ""
                   for (item in split) {
                       splitLength += item.length + 1
                       if (splitLength >= lineEndIndex) {
                           if (item.length >= expandText.length) {
                               lessText += item.substring(0, item.length - (expandText.length)) + expandText
                           } else {
                               lessText += item + expandText
                           }
                           break
                       }
                       lessText += item
                   }

                   view.text = lessText
                   view.movementMethod = LinkMovementMethod.getInstance()
                   tvMore.visibility = View.GONE
               }
           }, 10)
       }

 

하단의 블로그에서 참고를 많이 했습니다

현재 코틀린을 사용하기 때문에 코틀린으로 변경해서 작업을 했습니다

하단의 블로그에는 spannable적용 부분도 있기 때문에 참고해보시길 바랍니다

출처 블로그

 

[안드로이드] 더보기 기능(TextView ReadMore)

안녕하세요. YTS 입니다. 오늘은 TextView의 더보기 기능에 대해 적어보려합니다. 더보기 기능은 페이스북, 인스타 등 기본적으로 SNS 에서 등장하는 기능인데요. 생각보다 마땅한 라이브러리가 없

namget.tistory.com

 

궁금하신 점이나 의견이 있으시면 댓글 부탁드립니다 감사합니다 😊