본문 바로가기
Android

[Android] BindingAdapter를 활용한 값에 따른 textSize 값 바꾸기

by 박매트 2024. 5. 30.

 

xml

<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="6dp"
            android:ellipsize="end"
            android:fontFamily="@font/pretendard_regular"
            android:gravity="center"
            android:maxLines="1"
            bind:adjustDayMoneyText="@{item.expenses.outcome}"
            android:textColor="@color/red"
            android:visibility="@{item.expenses.outcome.equals(``) ? View.GONE : View.VISIBLE}"
            app:layout_constraintTop_toBottomOf="@id/tv_cost" />

 

코드

@BindingAdapter("bind:adjustDayMoneyText")
fun TextView.adjustDayMoneyText(amount: String?) {
    amount?.let{
        val amountValue = amount.replace(",", "").toLongOrNull() ?: return

        when {
            amountValue < 1_000_000_000 -> {
                this.textSize = 9f
                this.text = amount
            }
            amountValue in 1_000_000_000..99_999_999_999 -> {
                this.textSize = 8f
                this.text = "$amount..."
            }
        }
    }
}

 

분명 값에 따라 값이 바뀌어야 하는데... 안바뀌었다.

이유를 찾아냈다 ! ... 

바로 -100,000,000 마이너스 값을 기준으로도 수의 크기를 세서 했어야했는데 하지 못한 것...

그래서 절댓값 적용해서 해줬더니 크기가 알맞게 바뀌었다..

 

로그를 찍어봤는데, 애초에 settext값 조차 바뀌지 않았기에... ㅜ_ㅜ뭐지? 했는데 음수값도 설정을 해줬어야 하는  것..

val amountValue = kotlin.math.abs(amount.replace(",", "").toLongOrNull() ?: return)

코틀린 최고 ~~