XML TextView Style 동적 설정

데이터바인딩(DataBinding)을 통한 Style Code 설정
- XML Style DataBinding Fail
- XML 데이터바인딩에서는 Style옵션을 지원하지 않아 위의 코드처럼 구현이 불가능합니다
- 상황에 따라 TextView의 Font Style을 다르게 동적으로 설정하려면 Code 작업 필요 > TextView의 BindingAdapter를 구현했습니다
1. TextView BindingAdapter Function
@BindingAdapter("bindTextViewStyle")
fun TextView.bindTextViewStyle(styleResourceId: Int) {
if(styleResourceId != null) this.setTextAppearance(styleResourceId)
}
XML의 BindingMethod로 전달받은 Style Resource값을 TextView에 적용 setTextAppearance(resId)
2. Style Resource Return Property
val isTitleVisible: Boolea
get() = title.isNotBlank()
val isMessageFont: Int
get() = if(isTitleVisible) R.style.NotoRegularText else R.style.NotoMediumText
Title 존재 여부에 따라 Style을 동적으로 변경하기 위한 isMessageFont 프로퍼티 선언
존재 시 R.style.NotoRegularText / 미존재 시 R.style.NotoMediumText의 Style Resource 반
3. XML DataBinding
<androidx.appcompat.widget.AppCompatTextView
...
...
bind:bindTextViewStyle="@{item.isMessageFont}" />
TextView의 BindingMethod 'bindTextViewStyle' 선언