Moments of growth

[kotlin] 스크롤뷰 bottom으로 제약을 준 view가 키패드 올라올 때 따라 올라오는 현상 막기 본문

Android [Kotlin] 💻🤍

[kotlin] 스크롤뷰 bottom으로 제약을 준 view가 키패드 올라올 때 따라 올라오는 현상 막기

뮤링이 2022. 7. 10. 23:42

NestedScrollView에서 맨 밑에 있는 버튼을 bottom으로 제약을 주게 되면 키패드가 올라올 때 같이 따라 올라오게 되는 문제가 발생한다. 

android:windowSoftInputMode="adjustPan"

흔히 구글링해서 해결책으로 나오는 방법인데 scrollview에서는 적용되지 않는다.

 

그렇다고 scrollView를 안 쓸 수가 없었는데, 키보드가 올라올 때 자동으로 edittext가 가려지지 않게 올라가는 액션을 쓰기 위해서 scrollView를 포기할 수 없었다.

 

이 문제를 아래와 같이 해결했다. 

 

전체 구조

NestedScrollView 안에(cl_bg 안에) constraintLayout을 2개 넣은 구조

 

 

fillViewport를 false로 할 경우

 

무조건 버튼과 최소한의 값만큼은 떨어져있게 하기 위해 패딩값으로 줬다.

 

cl_bg의 bottom 값으로 제약 주기

 

마진값을 줘서 무조건 길이에 상관없이 버튼이 bottom으로부터 28dp 떨어지게

 

결론적으로 내용 작성하는 edittext와 다음 버튼 사이에는 일정한 간격이 최소한으로 벌어지고, 기기 사이즈에 따라서 더 간격이 넓어진다. 그리고 다음 버튼은 기기 사이즈에 관계없이 bottom으로부터 28dp 떨어지게 된다. 또한 키보드가 올라올 때는 버튼은 따라 올라오지 않고 뒤로 숨겨진다. 

 

해결 완료!

 

 

android:fillViewport="true"

 

ScrollView의 하위 View의 height에 match_parent 속성을 주면 적용 되지 않는다.

하지만 fillViewport = true로 하면 하위 View의 크기만큼 ScrollView가 늘어난다.

 

 

 

Reference)

 

안드로이드/Android 스크롤뷰(ScrollView) 사용법

안드로이드/Android 스크롤뷰(ScrollView) 사용법 스크롤뷰(ScrollView)  사용법 입니다.  android:fillViewport="" : ScrollView의 하위 View의 height에 fill_parent 속성을 주면 fill_parent 속성이 적용..

arabiannight.tistory.com

Comments