본문 바로가기
🖥 Programming/📱 Android (Kotlin)

[Android][kotlin] window.setSoftInputMode 적용안되는 현상 해결방법 (window.setSoftInputMode Not Working)

by MinChan-Youn 2022. 8. 17.

안녕하세요~ 챠니입니다! :)

오늘은 보통 EditText에서 키보드가 화면을 덮거나 밀려올라오는 현상을 해결하기위해

window.setSoftInputMode

//ex.
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)

다음과 같은 구분을 사용하는데요

AndroidManifest.xml에서 직접 적용하지 않고 코드로 적용하려고하면 적용이 안되는 현상이 있었습니다.

그럼 뭐 때문에 그런것인지 한번 알아보도록 하겠습니다.

 

    window.setSoftInputMode 적용안되는 현상

    AndroidManifest.xml에서 직접 적용을 하면 문제가 해결되지만

    레이아웃마다 적용하는 화면모드가 각 다른 경우도 있기때문에 다음과 같은 방법으로 해결을 할 수 있었습니다.

     

     

     

    조건.

    AndroidMenifest.xml에서 다음을 적용하지 않은 상태를 기준으로 하겠습니다.

    android:windowSoftInputMode

     

     

     

    저는 Framgent에서 onCreate부분에서 적용을 하려고 했는데요.. 적용이 되지않습니다..

    왜일까??.. 삽질을 많이 한결과 다음에서 해결방법을 찾을 수 있었습니다.

     

     

    최상위 Activity인 MainActivity의 OnCreate부분에서 코드로 먼저 아무런 SoftInputMode를 설정하는 것입니다.

    Fragment단에서 바로 SoftInputMode를 적용하려고하니 Activity쪽에서 설정된모드가 아예없기때문에 적용이 안되는것이 아닌가 싶었습니다!!!

     

     

     

     

    window.setSoftInputMode 적용 해결방법

    1. 사용하는 최상위 Activity(ex. MainActivity) onCreate단에서 먼저 적용을 한다.(특정모드 없음. 아무것이나 적용)

    //MainActivity.kt
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    
        window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
    }

     

     

    2. 적용하고자 하는 Fragment onCreate부분에서 SoftInputMode를 설정한다.

    //ex. MainFragment.kt
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        requireActivity().window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
    }

     

     

     

    3. 정상적으로 적용이 되었는지 확인할 수 있습니다!!!!

     

    이부분을 해결을 못해서 몇시간을 삽질했는데 다행이 문제해결을 할 수 있어서 속이 뚤리네요... ㅎㅎ

    모두 즐거운 코딩하세요!!

     

     

     

     

     

    질문 또는 궁굼한 부분은 댓글을 남겨주세요! 친절하게 답변드리겠습니다!

    응원의 댓글은 저에게 큰 힘이 된답니다! :)

    즐거운 하루되세요!

     

    깃허브 보러 놀러오세요 👇 (맞팔환영)

    https://github.com/younminchan

     

    younminchan - Overview

    안드로이드 2년차 개발자 •⚽️/🎤/🥁/🖥/🏃‍♂️/🚴‍♂️/🤟 TechBlog⬇️ minchanyoun.tistory.com - younminchan

    github.com