경험의 기록

키보드 내리기

정보를 입력받아 변경할 수 있는 레이아웃에서

변경키를 눌렀을 때 자동으로 키보드가 내려가도록 하려고 한다.

 

액티비티에서

private fun hideKeyBoard() {
        val imm = this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(this.currentFocus?.windowToken, 0)
    }

 

프래그먼트에서

private fun hideKeyBoard() {
        val imm = requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(requireActivity().currentFocus?.windowToken, 0)
    }

프래그먼트는 Context가 없기때문에 상위 액티비티의 컨텐츠를 사용한다.

 

 

 modifyButton.setOnClickListener {
                hideKeyBoard()
                val success = changingInformation()
                if(success){
                    Snackbar.make(view,"정보가 수정되었습니다.",Snackbar.LENGTH_SHORT).show()
                }
                else{
                    Snackbar.make(view,"다시 입력해주세요.",Snackbar.LENGTH_SHORT).show()
                }
            }

이제 키보드를 내리고 싶은 곳에서

함수를 호출해주면 된다.

 

키보드 화면 안가리게 하기

텍스트를 작성하려고 에디트뷰를 누르게되면

가끔 키보드가 UI를 가리는 현상이 발생한다.

 

이를 해결하기 위해

<activity
            android:name=".ui.activity.MainActivity"
            android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

매니패스트에서

android:windowSoftInputMode="adjustResize"

속성을 추가해주고

constraint 레이아웃에서

하단을 parent 와 연결해주면

 

 

사이즈가 자동으로 변경되어 가리지 않게된다.

 

 

 

 

 

참고

https://onlyfor-me-blog.tistory.com/269

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading