일모도원(日暮途遠) 개발자
[안드로이드UI] 채팅 대화내역 키보드에 안가리게 하기. 본문
채팅UI용 오픈소스를 쓰면 되는데, 쓰는데도 공부할 시간이 필요해서 간단한 기능만 일단 만들어 보고 있다.
문제는 채팅 내용이 있는 리사이클 뷰를 키보드가 가리는 현상이다.
구글 검색해보니 "adjustResize"를 manifest에 추가하면 된다는 글도 있었지만, 나는 이미 반영되어 있다.
android:windowSoftInputMode="stateAlwaysHidden|adjustPan|adjustResize"
챗GPT에게 물어봤지만 해결이 안되었다.
겨우 검색해서 찾아서 다음 한줄로 해결했다.
리사이클뷰에 addOnLayoutChangeListener를 추가하고 레이아웃이 바뀌면 리사이클 뷰의 맨 마지막으로 스크롤하게 만들었다.
binding.rvChatGpt.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> scrollToLastPosition());
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding.rvChatGpt.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> scrollToLastPosition());
}
private void scrollToLastPosition() {
int position = adapter.getItemCount() - 1;
if (position >= 0) {
binding.rvChatGpt.scrollToPosition(adapter.getItemCount() - 1);
}
}
참고로 "smoothScrollToPosition"로 하면 부자연스럽니다. 아래 영상을 보자.
'안드로이드 개발 > 안드로이드' 카테고리의 다른 글
[안드로이드 개발] 클립보드에 텍스트가 있는데 hasPrimaryClip이 false가 날때 (0) | 2023.04.19 |
---|---|
[안드로이드 개발] 아직도 헷갈리는 안드로이드 폴더 구조. (0) | 2023.04.07 |
[안드로이드개발] 릴리즈 모드에서만 죽는 현상 proguard관련 (0) | 2023.03.31 |
[안드로이드 개발] retrofit으로 텍스트 받아오기. (0) | 2023.03.09 |
[Android] 웹브라우저에서 텍스트 선택후 앱 열기 (0) | 2023.02.13 |