Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

입력 방법 공개 상태 처리

입력 포커스가 수정 가능한 텍스트 필드로 이동하거나 이 필드에서 나가면 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"를 사용하면 레이아웃의 크기가 조절되어 버튼 모음이 입력 방법 위에 표시됩니다.