본문 바로가기
Android 개발/Android UI

ScrollView 에서 하단에 뷰를 붙일 때 필요한 fillViewport

by Developer88 2017. 6. 7.
반응형

안드로이드 앱을 만들다 보면, 스크롤 뷰 가장 하단에 광고라든가, 확인 취소 버튼을 넣어야 하는 경우가 있습니다.

그런데, 디폴트로 스크롤 뷰의 자식뷰가 항상 View의 전체 면적을 차지하지 않고 있기 때문에,

가장 하단에 위치해야 하는 광고 혹은 확인 취소 버튼이 위로 올라가 붙어있습니다.


물론, RelativeVIew를 사용해서 하단에 항상 위치시킬 수 도 있지만,

원하지 않는 결과가 나올수도 있으므로 항상 Relative로 해결할 수는 없습니다.


이럴 때 어떻게 해야할지 실제로 구현해 보면서 정리하겠습니다.



1. 기본 UI 구현 


먼저 스크롤 뷰의 ChildLayout에  LinearLayout을 넣고, 그 안에 주황색 View와 입력을 받을 수 있는 EditText를 위치시킵니다.

이 때, layout_weight 를 1로 주어서, 부모의 전체 영역을 차지 할 수 있도록 해 줍니다.

그리고 항상 하단에 위치해야 할 광고를 FrameLayout으로 넣습니다.



사용자가 키보드를 입력하면 스크롤해서 EditText가 보일수 있도록 

windowSoftInputMode를 adjustResize로 해 줍니다.

그리고, stateHidden으로 키보드가 자동으로 올라오는 것을 막아놓겠습니다.




모두 적용하고 나면, 아래와 같은 화면을 볼 수 있습니다.



광고가 가장 하단에 위치해야 하는데, 어떻게 하면 할 수 있을까요?

아래에서 계속 알아보도록 하겠습니다.



2. FillViewport 이용해서 하단에 광고 배치하기


위에서 언급한대로, RelativeLayout의 layout_alignParentBottom을 이용할 수 도 있습니다.

하지만 키보드가 올라오면 광고가 키보드 위로 바짝 붙어서 올라오는데, 원하는 형태가 아닐경우도 있지요.

그래서 필요한 ScrollView의 속성이 바로 fillViewport입니다.




fillViewport 의 값을 true로 해주면, 이미지와 같이 하단에 광고가 붙어 있는 것을 볼 수 있습니다.




EditText에 focus를 주면 키보드가 올라오고, 광고는 스크롤 하단에 위치해서 보이지 않습니다.




스크롤을 해보면 아래와 같이 하단에 위치해 있는 것을 볼 수 있습니다.



728x90

댓글