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()
}
}
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()
}
}
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)
}
}
...
}
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: