안드로이드 앱을 만들다 보면, 스크롤 뷰 가장 하단에 광고라든가, 확인 취소 버튼을 넣어야 하는 경우가 있습니다.
그런데, 디폴트로 스크롤 뷰의 자식뷰가 항상 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를 주면 키보드가 올라오고, 광고는 스크롤 하단에 위치해서 보이지 않습니다.
스크롤을 해보면 아래와 같이 하단에 위치해 있는 것을 볼 수 있습니다.
'Android 개발 > Android UI' 카테고리의 다른 글
NavigationView를 이용한 Navigation Drawer 구현하기 (0) | 2017.07.23 |
---|---|
TextView에 글자가 흐르게 하는 marquee (0) | 2017.07.06 |
EditText의 ImeOptions 로 키보드의 Action 설정하기 (0) | 2017.07.05 |
Splash (로딩화면) 화면 만들기 | Android (0) | 2017.06.18 |
Keyboard 가 보이는지 알수 있게 해주는 ViewTreeObserver (1) | 2017.06.10 |
Activity 화면이 꺼지지 않도록 하려면? (0) | 2017.04.21 |
clipChildren 으로 ViewGroup의 범위를 벗어나는 안드로이드 UI (0) | 2017.04.17 |
안드로이드에서 카톡방식의 ViewPager + Tab 레이아웃 구현 (4) | 2017.03.13 |
ConstraintLayout 의 매력에 빠져보겠습니다 (0) | 2017.03.10 |
CollapsingToolbarLayout 으로 구현한 닫혀지는 ActionBar (0) | 2017.03.05 |
댓글