기존에 작성한 [로그인폼 만들기](https://devyurim.github.io/2018/01/17/8.html) 에서는 입력을 위해 키보드를 띄웠을때 버튼이 가려지는 단점이 있었다. 따라서 ScrollView를 적용하여 이런 단점을 보완하였다.
1. activity_login.xml 파일 수정
일단
스크롤 뷰(ScrollView)에 관한 기본적인 attribute를 보면 다음과 같다.
-
scrollbarStyle 안드로이드에서 지원하는 스크롤바 스타일에는 4가지가 존재한다.
스타일 | |
---|---|
insideOverlay | Padding 추가 없이 내용물의 안쪽에 스크롤바를 배치한다. 스크롤 바가 내용물 위에 투명하게 올라간다. |
insideInset | Padding을 추가하고 패딩영역에 스크롤바를 배치한다. 스크롤 바가 내용물에 오버랩되지 않는다. |
outsideOverlay | Padding 추가 없이 스크롤바를 화면 가장자리에 배치한다. 스크롤 바가 내용물 위에 투명하게 올라간다. |
outsideInset | Padding을 추가하고 스크롤바를 화면 가장자리에 배치한다. 스크롤 바가 내용물에 오버랩되지 않는다. |
원하는 스크롤바 스타일을 골라서 설정해 주면 된다. 나는 OutsideOverlay를 사용하였다.
-
style
스크롤바 스타일도 여러종류를 선택 할 수 있다. 선택지는 다음과 같다. 지금 현재 필요한 기능은 아닌거 같아서 default로 사용하였다.
-
fillViewport
fillViewport 항목은 True일 때 내용물의 크기가 화면을 넘어가도 알아서 내용물의 크기만큼 뷰가 확장이 된다. False이면 내용물의 크기가 화면밖으로 넘어가도 보이지 않게 된다.
-
clipToPadding
clipToPadding은 스크롤의 오작동 없이 뷰( scrollView, listView, gridView )에 padding 값을 주고 싶을 때 조절할 수 있는 항목이다.
( 디폴트 값은 True이다 )
패딩을 주는 이유는 뷰의 맨 마지막 요소가 다른 뷰에 오버랩 되어 가려지기 때문인데 해당 뷰에 패딩을 주게 되면 스크롤이 패딩이 적용된 안쪽에서만 작동하는 오류가 생기게 된다. 그렇기 때문에 해당 뷰 위아래에 header 와 footer를 추가하는 방법도 있지만 clipToPadding 항목을 False로 사용하면 쉽게 해결된다.
이제 키보드가 올라와도 양식이 자동으로 위로 밀려서 버튼이 겹치지 않는다!