본문 바로가기

곳간에서 인심난다/실무

[Android][Kotlin] 사용자가 선택한 탭의 문구에 볼드 처리

기본 Tab 볼드 처리

fun TabLayout.Tab.setBold() = this.view.children.find { it is TextView }?.let { tv ->
    (tv as TextView).post {
        tv.setTypeface(null, Typeface.BOLD)
    }
}

 다른 Typeface로 교체 가능

선택지가 4가지 밖에 없기는 하다.

 

사용자가 선택한 탭의 문구 볼드 처리

fun TabLayout.setSelectedTabBold() =
    this.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
        override fun onTabSelected(tab: TabLayout.Tab?) {
            tab?.let {
                setStyleForTab(it, Typeface.BOLD)
            }
        }

        override fun onTabUnselected(tab: TabLayout.Tab?) {
            tab?.let {
                setStyleForTab(it, Typeface.NORMAL)
            }
        }

        override fun onTabReselected(tab: TabLayout.Tab?) = Unit

        fun setStyleForTab(tab: TabLayout.Tab, style: Int) {
            tab.view.children.find { it is TextView }?.let { tv ->
                (tv as TextView).post {
                    tv.setTypeface(null, style)
                }
            }
        }
    })

 

맨 처음 default로 첫번째 tab이 선택되어 있을 때에는 bold 처리가 되어 있지는 않는 제한 사항.