Android

[android] 키보드 보이기 windowSoftInputMode

Rd_Dev 2020. 9. 4. 00:12

Photo by Amy Hirschi on Unsplash

windowSoftInputMode란?


액티비티와 키보드 의 상호작용하는 방법을 나타냅니다.

  • 액티비티가 포커스 될 때 키보드의 상태 변경
  • 키보드를 위한 공간을 확보하도록 화면 크기를 더작게 조정할지, 키보드가 화면의 일부를 가릴 때 현재 포커스가 표시되도록 컨텐츠(에디트텍스트뷰)를 이동할지 등 의 액티비티 화면에 대한 조정

설정은 아래 값중 하나이거나 state로 시작하는값 1개, adjust로 시작하는 값 1개 의 조합이어야합니다.

 

- 설정방법.

AndroidManifest.xml

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

 

설정 값

설명
stateUnspecified 시스템이 적당한 상태를 선택하거나 테마 설정에 따라 변경되며, 기본값입니다.
stateUnchanged 마지막 상태를 유지합니다.
stateHidden 해당 액티비티로 이동시 소프트 키보드가 숨겨집니다.
stateAlwaysHidden 액티비티의 기본 창에 입력 포커스가 있는 경우 소프트 키보드가 항상 숨겨집니다.
stateVisible 일반적으로 해당할 경우(사용자가 액티비티의 기본 창으로 이동하는 경우) 소프트 키보드가 표시됩니다.
stateAlwaysVisible 해당 액티비티로 이동시 소프트 키보드가 표시됩니다.
adjustUnspecified 시스템이 adjustResize와 adjustPan 중 하나를 결정해줍니다. 기본값입니다.
adjustResize 소프트 키보드를 위한 공간을 확보하도록 액티비티의 윈도우 크기를 조정합니다.
adjustPan
소프트 키보드를 보이게 하지만 크기를 조정하지 않습니다.

 

기본 

기본 화면

 

 

adjustResize

adjustResize

adjustPan

adjustPan

 

 

코드상으로 소프트 키보드 띄우기

ex)특정 플래그로 화면 이동시에만 띄우게 하기 좋다

 

fun showSoftKeyboard(view: View){
    if (view.requestFocus()){
        val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
        val isShowing = imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
        if (!isShowing) window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
    }
}

 

참고

stackoverflow.com/questions/29784124/java-lang-illegalargumentexception-appcompat-does-not-support-the-current-theme

 

java.lang.IllegalArgumentException: AppCompat does not support the current theme features

I tried to migrate a project from Eclipse to Android studio. Finally I am able to run it, but at a certain point I got this exception, and I found nothing in google about this: 04-22 00:08:15.484

stackoverflow.com

 

developer.android.com/guide/topics/manifest/activity-element.html#wsoft