android IME 를 띄우는 위치를 알고 싶습니다.


Android 개발중 막히는 부분이 있어서 도움을 받고자 질문을 올립니다.

Android System내의 모든 App에서 IME가 뚤때 Event나 Listener를 받고자 하는데 찾아보니 그런 api는 없는 듯하네요 그래서 Framework 부분을 좀 보다보면 해결책이 나오지 않을까 하는데요 문제는 IME를 띄우는 부분을 찾아지지가 않네요

혹시 Edit 창에 Focus시 자동으로 IME를 띄울때 어느부분에서 띄우는지 아시는 내용이 있으면 고수분들의 조언을 얻고자 합니다.

요약 : EditText 입력창에 Focus시 IME를 show의 위치를 찾고자 합니다.

  • 2016년 09월 02일에 작성됨

조회수 109


2 답변


  • 2016년 09월 02일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

  • 참고로 주신 소스 잘 보았습니다. root view를 알아야만 체크가 가능한 내용인거 같아서 제가 하려는 부분과 조금 다르네요. 링크 내용은 감사합니다~    로빈퀸   2016.9.6 11:03     

말씀하신 것처럼 안드로이드에서는 소프트웨어 키보드가 보여지거나 사라지는 시점을 확인할 수 있는 API를 제공하지 않습니다. 그렇게 때문에 프레임워크 소스를 본다는 것은 큰 의미가 없습니다. (키보드를 show하는 위치를 찾더라도 애플리케이션에서 이를 활용해 범용적으로 사용하는 것은 어려울 가능성이 높습니다.)

이 문제를 해결 할 수 있는 (많이 알려진) 제2의 해결책은 액티비티의 콘텐츠 영역 높이를 체크하는 것입니다. 키보드가 보여질 때, 액티비티의 콘텐츠 영역이 키보드 영역만큼 줄어들기 때문에 이를 이용해서 키보드가 보여졌는지 그리고 사라졌는지를 확인할 수 있습니다. 웹상에 존재하는 해결책이라고 설명된 많은 코드들이 위 방식을 기반으로 변형된 코드입니다.

실제 코드와 위 방식의 제약사항은 다음 링크를 참고하세요.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close