본문 바로가기

OS/Android

Android 키보드 보일 때 reclyclerView 마지막 아이템으로 스크롤 이동

반응형

자꾸 OnLayoutChangeListener를 까먹어서 포스팅한다.

        v_recyclerViewChat.addOnLayoutChangeListener(object : View.OnLayoutChangeListener {
            override fun onLayoutChange(v: View?, left: Int, top: Int, right: Int, bottom: Int, oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int)
            {
                if (bottom < oldBottom)
                {
                    v_recyclerViewChat.postDelayed({
                        if (m_arrChat.size > 0)
                        {
                            v_recyclerViewChat.scrollToPosition(m_arrChat.size -1)
                        }
                    }, 100)
                }
            }
        })

onLayoutChange는 뷰의 위치나 사이즈가 변경됐을 때 알려주는 핸들러 이다.

v: View?

left : 변경되고 난 후의 left값

top : 변경되고 난 후의 top 

right : 변경되고 난 후의 right 

bottom : 변경되고 난 후의 bottom 

oldLeft : 변경되기 전의 left값

oldTop : 변경되기 전의 top 

oldRight : 변경되기 전의 right 

oldBottom : 변경되기 전의 bottom 

 

즉, 엑티비티의 옵션을 adjustResize로 세팅하였을 경우 키보드가 보일 때 recyclerView의 Bottom 값이 변경되므로 bottom < oldBottom일 때 키보드가 올라왔다고 볼 수 있다.   

반응형