다음 단계로 넘어가기 전에, 계속 거슬렸던 DiaryListBindingAdapter
의 높이를 설정해주자. 미리 말했듯, 별도의 인자를 넘기지 않고 다이렉트로 설정해주기 위해서 전역변수들을 모아 관리하는 StaticValue
클래스를 만들어주었다.
나중에 넓이값이 필요해질 수 있으니, 일단은 넓이와 높이를 모두 저장하도록 하자. 한 클래스에서 다른 클래스의 값을 다이렉트로 수정하는 것은 관심사 분리 원칙이었나...에 의해서 권장되지 않기에 별도로 만들어준다 (이러면 그런데 코틀린의 간결함을 잃는 것 아닌가? 싶기도 하다.)
StaticValue.kt
class StaticValue {
companion object {
var widthPixel: Int = 0
var heightPixel: Int = 0
fun getWidth() = widthPixel
fun setWidth(width: Int) {
widthPixel = width
}
fun getHeight() = heightPixel
fun setHeight(height: Int) {
heightPixel = height
}
}
}
다음으로, LogInFragment
에서 로그인 할 때, 리스트로 넘어가기 전 높낮이를 저장하는 루틴을 추가한다.
LogInFragment.kt
private fun measureAndSetWidthAndHeight() {
val width = Resources.getSystem().displayMetrics.widthPixels
val height = Resources.getSystem().displayMetrics.heightPixels
StaticValue.setWidth(width)
StaticValue.setHeight(height)
}
위 함수는 logInFlag
를 observing 할 때, toList()
함수 호출 직전에 호출한다.
이제 어댑터에서 높이를 설정해준다. 대충... 에뮬레이터 기준 높이의 반절이면 좋을 것 같다. 아래와 같이 bind()
함수에 추가한다.
DiaryListBindingAdapter.kt
val params = itemView.layoutParams
params.height = (StaticValue.getHeight() * 0.5).toInt()
itemView.layoutParams = params
결과는 아래와 같이 높이가 조정되었다.
'개발일기' 카테고리의 다른 글
8월 한달 토이 프로젝트를 해보자! -10 : Firebase 실패기 (진행중) (0) | 2022.08.16 |
---|---|
8월 한달 토이 프로젝트를 해보자! -08 : LogIn Data Binding & ViewModel (0) | 2022.08.10 |
8월 한달 토이 프로젝트를 해보자! -07 : submenu (0) | 2022.08.09 |
8월 한달 토이 프로젝트를 해보자! -06 : AppBar (0) | 2022.08.09 |
8월 한달 토이 프로젝트를 해보자! -05 : Adapter Click (0) | 2022.08.09 |