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
    }
반응형