diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterAdapter.kt index c62b6365..194898d6 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterAdapter.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.ViewTreeObserver import androidx.recyclerview.widget.RecyclerView import coil.load import coil.transform.RoundedCornersTransformation @@ -27,13 +28,27 @@ class CharacterAdapter( // 순위 표시 여부 결정 if (showRanking) { - binding.llRanking.visibility = View.VISIBLE + binding.tvRanking.visibility = View.VISIBLE binding.tvRanking.text = (index + 1).toString() + binding.tvRanking.apply { + includeFontPadding = false + maxLines = 1 + // 뷰가 측정된 뒤 메트릭이 확정되므로, preDraw 시점에 보정 + viewTreeObserver.addOnPreDrawListener( + object : ViewTreeObserver.OnPreDrawListener { + override fun onPreDraw(): Boolean { + viewTreeObserver.removeOnPreDrawListener(this) + val fm = paint.fontMetrics + // 글리프 하단을 라인 박스 하단에 맞추기 위한 시프트 + translationY = fm.descent + return true + } + }) + } } else { - binding.llRanking.visibility = View.GONE + binding.tvRanking.visibility = View.GONE } - binding.ivCharacter.clipToOutline = true binding.ivCharacter.load(character.imageUrl) { crossfade(true) placeholder(R.drawable.ic_logo_service_center) diff --git a/app/src/main/res/layout/item_character.xml b/app/src/main/res/layout/item_character.xml index b596d8ff..2e638148 100644 --- a/app/src/main/res/layout/item_character.xml +++ b/app/src/main/res/layout/item_character.xml @@ -1,39 +1,33 @@ + android:layout_height="168dp" + android:background="@color/black"> - - - - - + android:fontFamily="@font/pretendard_bold" + android:includeFontPadding="false" + android:maxLines="1" + android:textColor="@color/white" + android:textSize="72sp" + tools:text="1" />