제이슨의 개발이야기
[안드로이드] 채팅 중 키보드가 올라 올 때 대화 화면의 포지션이 달라지는 문제 해결!!!! 본문
안녕하세요 요번에 제가 채팅 기능 개발 중 키보드가 올라올 때 대화 내용의 포지션이 달라지는 문제를 겪었습니다
이것을 해결하기 위해서 manifest에서 windowSoftInputMode 을 adjustResize 로 바꾸고 했지만
adjustResize 모드 로 하게 되면 하단에 edit창은 올라가지만 채팅 대화 내용은 여전히 문제는 해결 하지 못했습니다
키보드가 올라오기 전 가장 하단 메세지는 "1010" 이였지만
키보드가 올라 올때 이런 식으로 editText창은 올라가지만 "1010"이 아닌 "66"이 가장 밑에 보여짐!
또 나름대로 머리를 굴려 본다고 키보드가 올라올 때 키보드의 길이를 맞춰 recycler view 의 Height 를 줄인다 거나 혹은
recycler view 밑에 height가 0dp 인 View를 하나 만들어 놓고 키보드가 올라올 때 0dp인 View 의 Height 를 높혀 recycler view를 위로
올린다거나 혹은 키보드가 올라 올때 보여지는 화면의 마지막 아이템 포지션 값을 저장 해 놓은 다음에 그 값으로 scrollToPosition() 등등
수많은 노력을 했지만 결국 근본적인 문제를 해결하기엔 역부족이었습니다 ㅠㅠ 전문 개발 커뮤니티에 글 도 올려보아도 앞서 말한
mRecyclerView.getLayoutManager().scrollToPosition(currentPosition); 하라는 말 밖에 없었습니다 ㅠㅠ scrollToPosition(currentPosition); 를 사용하면 일단 문제를 해결 할 수 있지만 키보드를 올리고 내리 고 할때 이질감이 들어서 사용자가 불편함을 느낄 수 밖에 없었습니다
정말 열심히 고민하고 공부 한 끝에 리사이클러뷰 의 레이아웃매니저에서 setStackFromEnd(true) 로 하게 되면 리사이클러뷰는 무조건 뒤에서 부터 출력 하게 된다는 것을 찾아냈습니다!
이렇게 하면 사용자가 키보드가 올라오기 전 "1010" 메세지가 키보드가 올라오더라도 여전히 하단에는
"1010" 이 보여집니다!!!
'안드로이드' 카테고리의 다른 글
안드로이드 Ui 개발 어떤 레이아웃이 더 효율적일까? 현업에서는? (0) | 2021.03.06 |
---|---|
안드로이드 fragment 생명주기 ! (0) | 2021.03.04 |
안드로이드 서비스란 무엇일까?? 백그라운드?? (0) | 2021.03.03 |
안드로이드 Activity 생명주기 (0) | 2021.03.02 |
recyclerView 아이템 들 중 원하는 아이템 혹은 위젯에 변화주기! (0) | 2021.02.19 |