스택오버플로우에서 찾은 여러 방법 중 이게 제일 깔끔하게 작동했다..
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
View view = getCurrentFocus();
if (view != null && (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_MOVE) && view instanceof EditText && !view.getClass().getName().startsWith("android.webkit.")) {
int scrcoords[] = new int[2];
view.getLocationOnScreen(scrcoords);
float x = ev.getRawX() + view.getLeft() - scrcoords[0];
float y = ev.getRawY() + view.getTop() - scrcoords[1];
if (x < view.getLeft() || x > view.getRight() || y < view.getTop() || y > view.getBottom())
((InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow((this.getWindow().getDecorView().getApplicationWindowToken()), 0);
}
return super.dispatchTouchEvent(ev);
}
'개발 > 안드로이드' 카테고리의 다른 글
[안드로이드] 데이터 및 파일 저장소 (0) | 2020.02.27 |
---|---|
[안드로이드] 레이아웃 (0) | 2020.02.23 |
[안드로이드] 프래그먼트 (0) | 2020.02.12 |
[안드로이드] 뷰모델 - 내 언어로 요약 (0) | 2020.02.12 |
[안드로이드] 가로 세로 고정하기 (0) | 2020.02.03 |