안녕하세요 현재 채팅어플 개발 중인데 edittext 글 입력 후 전송 button 누르면 포커스가 이동하여 키보드가 내려갑니다.
글 작성 후 버튼 누르면 키보드가 유지되었으면 합니다.(내려갔다가 다시 올라오지 않고 자연스럽게, 카카오톡 처럼)
강제로 button에 edittext.requestFocus()를 줘 봐도 소용이 없고 InputMethodManager를 통해 키보드를 강제로 올리면 포커스가 이동하면서 키보드가 내려갔다가 다시 올라와서 부자연스러우며 RecyclerView 클릭 시 키보드 내려가야 되는데 아예 키보드가 고정이 되 버립니다.(물론 RecyclerView 자체와 Adapter의 itemView에 키보드 내리는 코드도 다 작성 해 보고 포커스를 이용하는 방법, layout xml파일에서 windowSoftInputMode 설정도 다 해봤지만 소용 없었습니다.)
그냥 글만 올리면 키보드를 상시 고정해 두어도 되는데 문제는 다른 부가기능이 많아서 키보드를 마냥 고정할 수는 없습니다.
현재 키보드가 올라왔는지를 판단하는 리스너는 구현 된 상태이며 완벽하게 동작하지만 Focus 리스너가 먼저 동작을 해 버리니 처리를 어떻게 해야 될 지 모르겠습니다. 생각보다 더 간단할거 같은데....
혹시 해당 이슈 겪었거나 방법을 아시는분 답변 해 주시면 감사하겠습니다.
msg.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus){
var imm = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY)
}
}
disposeBag!!.add(
RxView.clicks(send)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe {
//msg.requestFocus()
//msg.isFocusableInTouchMode = true
if (!msg.text.toString().isNullOrEmpty()){
sendMessage(msg.text.toString())
}
}
)