입력 포커스가 수정 가능한 텍스트 필드로 이동하거나 이 필드에서 나가면 Android에서는 이에 따라 입력 방법(예: 터치 키보드)을 표시하거나 숨깁니다. 시스템에서는 또한 입력 방법 위에 UI와 텍스트 필드가 표시되는 방식도 결정합니다. 예를 들어 화면의 세로 공간이 제한된 경우 텍스트 필드는 입력 방법 위의 공간을 전부 채울 수 있습니다. 대부분의 앱에 이러한 기본 동작만 있으면 됩니다.
하지만 입력 방법의 가시성을 보다 직접적으로 제어하고 입력 방법이 표시될 때 레이아웃의 모양을 지정해야 하는 일부 경우도 있습니다. 이 과정에서는 입력 방법의 가시성을 제어하고 응답하는 방법을 설명합니다.
활동이 시작되면 입력 방법 표시하기
활동이 시작될 때 Android에서는 레이아웃의 첫 번째 텍스트 필드에 포커스를 두지만 입력 방법은 표시되지 않습니다. 텍스트 입력이 활동의 주된 작업이 아닐 수 있기 때문에 이런 현상은 적절합니다. 하지만 텍스트 입력이 실제로 주된 작업인 경우에는(예: 로그인 화면) 기본적으로 입력 방법을 표시해야 합니다.
활동이 시작될 때 입력 방법을 표시하려면 "stateVisible"
값을 사용하여 android:windowSoftInputMode
속성을 <activity>
요소에 추가합니다. 예:
<application ... > <activity android:windowSoftInputMode="stateVisible" ... > ... </activity> ... </application>
참고: 사용자의 기기에 하드웨어 키보드가 연결되어 있으면 소프트 입력 방법이 표시되지 않습니다.
필요 시 입력 방법 표시
활동의 수명 주기에서 입력 방법을 표시하려는 곳에 메서드가 있는 경우 InputMethodManager
를 사용해 표시하면 됩니다.
예를 들어 다음 메서드는 사용자가 무언가를 입력할 View
를 취하고 requestFocus()
를 호출하여 뷰에 포커스를 준 다음 showSoftInput()
을 호출하여 입력 방법을 엽니다.
Kotlin
fun showSoftKeyboard(view: View) { if (view.requestFocus()) { val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT) } }
자바
public void showSoftKeyboard(View view) { if (view.requestFocus()) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT); } }
참고: 입력 방법이 표시되고 나면 입력 방법을 프로그래밍 방식으로 숨겨서는 안 됩니다. 사용자가 텍스트 필드에서 작업을 마치거나 사용자가 시스템 컨트롤(예: 뒤로 버튼 사용)로 숨길 수 있는 경우 시스템에서 입력 방법을 숨깁니다.
UI 응답 방식 지정
입력 화면이 화면에 표시되면 앱의 UI에 사용할 수 있는 공간이 줄어듭니다. 시스템에서는 표시되는 UI 부분을 조정하는 방법과 관련된 결정을 내리지만 그 결정이 올바르지 않을 수 있습니다. 앱이 가장 잘 동작하게 만들려면 나머지 공간에 UI를 표시하는 시스템 방식을 지정해야 합니다.
원하는 활동 처리 방식을 선언하려면 매니페스트의 <activity>
요소에서 'adjust' 값 중 하나와 함께 android:windowSoftInputMode
속성을 사용하세요.
예를 들어 스크롤이 필요하더라도 레이아웃의 모든 콘텐츠에 액세스 가능하도록 시스템에서 레이아웃 크기를 사용 가능한 공간에 맞게 조절하게 하려면 "adjustResize"
를 사용합니다.
<application ... > <activity android:windowSoftInputMode="adjustResize" ... > ... </activity> ... </application>
조정 사양과 위에 나온 최초 입력 방법 공개 상태 사양을 결합할 수 있습니다.
<activity android:windowSoftInputMode="stateVisible|adjustResize" ... > ... </activity>
UI에 사용자가 텍스트를 입력한 직후나 입력하는 동안 액세스해야 할 수도 있는 컨트롤이 포함된 경우 "adjustResize"
를 지정하는 것이 중요합니다. 예를 들어 상대적 레이아웃을 사용하여 화면 하단에 버튼 모음을 배치하는 경우 "adjustResize"
를 사용하면 레이아웃의 크기가 조절되어 버튼 모음이 입력 방법 위에 표시됩니다.