Android
[android] 키보드 보이기 windowSoftInputMode
Rd_Dev
2020. 9. 4. 00:12
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
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)
}
}
참고
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