본문 바로가기

Programming/android

안드로이드 키보드 옵션


안드로이드는 모바일 프로그래밍이기 때문에, 화면의 제약이 많습니다.
이에 따라서, 화면을 효율적으로 사용하기 위하여, 키보드가 올라왔을경우, 화면을 어떻게 표현할 것인가가 중요한 이슈가 되기도 하죠.

그래서, 안드로이드는 키보드가 화면에 보여질때 어떻게 표현할 것인가에 대해서, 몇가지 가이드라인을 주고 있습니다.

제가 겪은 일중 하나는, 안드로이드 키보드가 올라올시 레이아웃이 재조정되는 현상이 있었습니다. 
저는, 키보드가 올라오더라도 레이아웃이 유지되기를 원했습니다. 그래서, 
이것을 해결하기 위해, 매니페스트 파일을 조정해 주었습니다.

android:windowSoftInputMode="adjustPan"
저는 위의 방법을 썼네요, 

네임플레이스와, 옵션은 다음과 같습니다. 

android:windowSoftInputMode – 소프트 키보드 상태 : 액티비티가 사용자 관심의 포커스를 받을 때 소프트 키보드가 보여지는지 여부를 설정한다.

액티비티 메인 윈도우에 대한 조정 : 소프트 키보드를 위한 공간을 만들기 위해 액티비티 메인 윈도우를 작게 줄일 지의 여부 또는 메인 윈도우 일부가 소프트 키보드에 의해 가려질 때 현재 포커스를 보이도록 하기 위해 메인 윈도우의 컨텐트가 상하로 움직일 지의 여부를 설정한다.

[ 안드로이드 키보드 보이기 모드 옵션 ]

stateUnspecified : 소프트 키보드 상태에 대해 시스템이 적절한상태를 선택하거나 테마 설정값을 따른다. 소프트 키보드의 디폴트 설정 값.
stateUnchanged : 소프트 키보드는 마지막 상태로 유지
stateHidden : 사용자 액티비티를 선택할 때 소프트 키보드는 숨겨짐
stateAlwaysHidden : 액티비티의 메인 위도우가 입력 포커스를 가질 때 소프트 키보드는 항상 숨겨짐
stateVisible : 사용자가 액티비티 메인 위도우 앞으로 갈 때 소프트 키보드 보여짐
stateAlwaysVisible : 사용자가 액티비티를 선택할 때 소프트 키보드 보여짐
adjustUnspecified : 스크롤 할 수 잇는 레이아웃 뷰들을 가지고 있다면 윈도우 크기 재조정. 메인 윈도우의 디폴트 값. 시스템이 Pan, Resize등 알아서 선택. 스크롤이 가능한가?, 레이아웃에 여백이 얼마나 있는지 등을 고려해서, 알아서 조정해준다.
adjustResize : 스크린에 소프트 키보드 공간을 만들기 위해메인 윈도우 크기가 항상 재조정 됨. 뷰의 크기가 작아지죠, 하지만 모든 뷰가 보입니다.
adjustPan : 소프트 키보드 공간을 만들기 위해 메인 윈도우 크기가 재조정 되지 않음. 포커스를 받은 뷰가 보이게 할려면, 스크롤 하여 이동하여야 합니다. 입력받는 뷰는 보이지만, 다른 뷰들이 가려지는 현상이 있습니다. 다른 뷰들이 보이려면, back키로 키보드를 닫아야 합니다.