프로젝트 진행 중 서버에서 \n(줄 바꿈) 문자를 주지않고 변하는 Text 값에 따라 해당 단어가 TextView영역을 넘기면 줄바꿈을 하고 gravity의 Left를 준 것처럼 보이게 해야했다.
단순하게 gravity의 Left를 주고 해당 Text가 처리하였었지만 길이가 애매한 Text 들이 들어왔을때 Text가 잘린다고 이슈가 들어와서 ViewTreeObserver의 GlobalLayoutListener를 이용해 Layout의 크기를 재조정하는 코드를 사용하였다.
testTextBox // 텍스트뷰가 들어있는 layout
testText //텍스트뷰
testTextBox.visibility = View.Invisible
testText.viewTreeObserver.addOnGlobalLayoutListener (object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
testText.viewTreeObserver.removeOnGlobalLayoutListener(this)
val layout: Layout? = testText.layout
if(layout !=null) {
try {
val stringBuilder = StringBuilder()
for (i in 0 until layout.lineCount) {
val start: Int = layout.getLineStart(i)
val end = layout.getLineEnd(i)
stringBuilder.append(tbdv_addr.substring(start, end))
if (i < layout.lineCount - 1) stringBuilder.append("\n")
}
testText.text = ""
testText.text = stringBuilder.toString()
Handler(Looper.getMainLooper()).postDelayed({testTextBox.visibility = View.VISIBLE}, 30)
}catch (e : Exception) {
e.printStackTrace()
}
//코드로 마진값 주기
val param = testText.layoutParams as LinearLayout.LayoutParams
//param.gravity = Gravity.CENTER
param.topMargin = resources.getDimensionPixelSize(R.dimen.common_3dp)
testText.layoutParams = param
}
}
})
'Android > Util' 카테고리의 다른 글
Custom Contents Loading Progress (컨텐츠 로딩 프로그레스) (0) | 2021.03.09 |
---|