Study Record

[안드로이드] 키보드 내리기/올리기/Activity 시작 시 자동으로 올리기 본문

안드로이드

[안드로이드] 키보드 내리기/올리기/Activity 시작 시 자동으로 올리기

초코초코초코 2023. 6. 16. 16:56
728x90

 

View 에는 포커스(Focus) 를 가질 수 있는데 입력 포커스가 수정 가능한 텍스트 필드(EditText)로 이동하거나 이 필드에서 나가면 Android 에서는 이에 따라 입력 방법(ex. 터치 키보드)를 표시하거나 숨긴다.

 

사용자가 EditText 를 클릭하면 포커스가 옮겨가고 커서가 생기면서 키보드가 올라오는 것이 예시가 될 수 있다.

 

키보드를 올리고 내리거나 포커스를 조절하는 것을 코드로 제어하고 싶을 때가 있다. 주의해야 할 점은 강제로 키보드를 올리더라도 입력할 수 있는 뷰(ex. EditText)가 포커스를 가지지 않으면 사용자가 키보드로 입력하더라도 뷰(ex. EditText)에 적용되지 않는다.

 

따라서 키보드를 올리고 싶다면 입력 가능한 뷰에 포커스를 먼저 적용하고 키보드를 올려야 한다.

 

 

😶 Activity 시작 시 자동으로 입력 방법(ex. 키보드) 표시하기

AndroidManifest.xml 파일의 android:windowSoftInputMode 속성의 stateVisible 값을 사용한다.

<application ... >
    <activity
        android:windowSoftInputMode="stateVisible" ... >
            ...
    </activity>
        ...
</application>

 

 

😶 자연스러운 UI 표시

입력 방법(ex. 키보드) 가 화면에 표시될 때 앱의 UI 에 사용할 수 있는 공간이 줄어든다. 레이아웃의 모든 콘텐츠에 액세스 가능하도록 시스템에서 레이아웃 크기를 사용 가능한 공간에 맞게 조절하려면 android:windowSoftInputMode 속성의 adjustResize 를 사용한다. stateVisible 과 같이 사용하고 싶다면 "adjustResize|stateVisible" 으로 결합할 수 있다.

<activity
    android:windowSoftInputMode="stateVisible|adjustResize" ... >
            ...
</activity>

 

 

😶 View 에 포커스 적용하기

view.requestFocus()

 

 

😶 키보드 올리기

키보드를 올리기 전 먼저 사용자가 입력할 View 에 포커스를 맞추고 키보드를 올린다.

 fun showSoftKeyboard(view: View) {
    if (view.requestFocus()) {
        // 키보드 올리기
        val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
    }
}

 

 

😶 키보드 내리기

val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)

 

 

 

 

키보드 입력 처리  |  Android 개발자  |  Android Developers

키보드 입력 처리 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. UI의 텍스트 필드에 포커스를 맞추면 Android 시스템에서는 소프트 입력 방법인 터치 키보드

developer.android.com

 

728x90