EditText를 사용하다보면 키보드를 내리고 싶은 경우가 있습니다. 예를 들면 위 그림과 같이 EditText 입력하고 검색 버튼을 누르면 텍스트 입력은 끝났으니 키보드가 내려갔으면 좋겠는데 계속해서 유지된 상태로 있습니다. 이와 같이 키보드를 내려...

[안드로이드] EditText 키보드 내리기 숨기기

EditText를 사용하다보면 키보드를 내리고 싶은 경우가 있습니다.

예를 들면 위 그림과 같이 EditText 입력하고 검색 버튼을 누르면

텍스트 입력은 끝났으니 키보드가 내려갔으면 좋겠는데 계속해서 유지된 상태로 있습니다.

이와 같이 키보드를 내려야하는 상황이 있을 수 있는데요,

간단한 예제로 남겨보려고 합니다.








1. EditText 키보드 내리기/올리기

아래와 같이 EditText 키보드를 내리는 동작은 아래와 같이 간단하게 구현 가능합니다.

private fun hideKeyboard(view: EditText) {
try {
val inputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
} catch (e: Exception) {
e.printStackTrace()
}
}


추가로 원하는 EditText에 포커싱을 주고 키보드를 올려주는 동작도 아래와 같이 작성할 수 있습니다.

private fun showKeyboard(view: EditText) {
try {
view.requestFocus() // Focus to target editText

val inputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.showSoftInput(view, 0)
} catch (e: Exception) {
e.printStackTrace()
}
}








2. 테스트 결과

MainActivity에서 몇 가지 버튼을 생성해서 간단하게 테스트해볼 수 있었습니다.

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

binding.btnSearch.setOnClickListener {
hideKeyboard(binding.etKeyword)
}

binding.btnShowKeyboard.setOnClickListener {
showKeyboard(binding.etKeyword)
}

binding.btnHideKeyboard.setOnClickListener {
hideKeyboard(binding.etKeyword)
}
}

...
}






0 comments: