Android
안드로이드 키보드 높이 구하기
최데브
2024. 4. 29. 11:45
키보드가 올라왔을때 키보드 위로 특정 레이아웃을 올리고 싶을때가 있다.
매니페스트 파일이나 코드상으로 넣어도 화면 구조상 어려워서 원하는대로 동작하지 않을때가 있는데
아래와 같은 방법으로 해결 할 수 있다.
화면의 적당한 곳에 아래 코드를 적어준다. 이 코드를 Fragment 에서 사용했을때 기준이다.
ViewCompat.setOnApplyWindowInsetsListener(requireActivity().window.decorView.rootView) { _, insets ->
val sysBarInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
val imeHeight = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom
updateViewPositionForKeyboard(imeHeight - sysBarInsets.bottom)
insets
}
private fun updateViewPositionForKeyboard(keyboardHeight: Int) {
val layoutParams = binding.키보드위로 올리고 싶은 레이아웃의 id.layoutParams as ConstraintLayout.LayoutParams
if (keyboardHeight > 0) {
layoutParams.bottomMargin = keyboardHeight
} else {
layoutParams.bottomMargin = 0
}
binding.키보드위로 올리고 싶은 레이아웃의 id.layoutParams = layoutParams
}