제이슨의 개발이야기

[안드로이드] 채팅 중 키보드가 올라 올 때 대화 화면의 포지션이 달라지는 문제 해결!!!! 본문

안드로이드

[안드로이드] 채팅 중 키보드가 올라 올 때 대화 화면의 포지션이 달라지는 문제 해결!!!!

제이쓰은 2021. 2. 5. 22:47
728x90
반응형

안녕하세요 요번에 제가 채팅 기능 개발 중 키보드가  올라올 때 대화 내용의 포지션이 달라지는  문제를 겪었습니다 

이것을 해결하기 위해서 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" 이 보여집니다!!!

728x90
반응형