아무것도없는 곳을 탭하여 키보드를 닫는 실현

2104 단어 안드로이드


개요



채팅풍 앱을 만들고 있으면 "아무것도 없는 곳 탭하면 키보드에 닫는다"라는 거동을 넣고 싶어집니다. 이를 위한 방법을 두 가지 생각해 보았으므로 소개합니다.

방법 1



「아무것도 없는 곳」은 구체적으로 말하면 키보드나 EditText 부분 이외의 RecyclerView 의 영역이 됩니다. 그래서, 솔직하게 RecyclerView 의 아이템에 대해서 클릭 청취자를 세트 해 그 안에서 키보드를 닫는 코드를 써 주면 좋을 것 같습니다.
groupieAdapter.setOnItemClickListener { _, _ ->
  hideKeyboard()
}

방법 2



다른 하나는 "포커스"를 이용하는 방법입니다. EditText 이외의 View 에 포커스가 이동하면 키보드를 닫는다고 하는 작전입니다.
editText.onFocusChanged { gainFocus, _, _ -> 
  if(!gainFocus) {
    hideKeyboard()
  }
}

포커스에 대한 자세한 것은 공식 문서 https://developer.android.com/guide/topics/ui/ui-events.html](https://developer.android.com/guide/topics/ui/ui-events .html 참조.

나머지는 RecyclerView 의 아이템의 layout 파일에 이하를 추기해, 아이템이 포커스를 취득할 수 있도록(듯이) 합니다.
++ android:focusable="true"
++ android:focusableInTouchMode="true"

방법 2는 예를 들면 다이얼로그나 하단 시트를 열었을 때에 키보드를 닫고 싶다고 하는 경우에도 응용이 효과적이라는 점에서 뛰어나다고 말할 수 있을 것 같습니다. 임의의 View 에 포커스 가능성을 설정해 두면, 그 View 에 포커스가 이동했을 때에 키보드가 닫아 ​​주기 때문입니다.

좋은 웹페이지 즐겨찾기