본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] disable fullscreen IME when activity is on landscape mode (IME_FLAG_NO_EXTRACT_UI)

by 돼지왕 왕돼지 2023. 1. 10.
반응형

-

내 앱이 activity 가 landscape 모드일 때 IME 가 fullscreen 이 되는 현상이 있고, 다른 앱은 fullscreen 이 안 되는 것을 확인하였다.

control 가능한 영역인 것을 알 수 있다.

 

-

EditorInfo.IME_FLAG_NO_EXTRACT_UI 란 녀석이 있었다.

설명을 보면..

landscape mode 에서 input method 는 fullscreen 이 될 수 있다.
이는 해당 UI 들을 작게 보이게도 하며, 앱을 뒤로 감추기도 한다.
IME 가 event 를 모두 먹기 때문에, 보이는 UI 일부는 touch 에 반응하지 못한다. 이는 user 에게 혼란스럽게 만든다.
그래서 이 녀석 대신 FLAG_NO_FULLSCREEN 을 쓰는 것이 더 좋다.
IME_FLAG_NO_EXTRACT_UI 를 쓰는 것은 비추이며, 미래에 deprecate 될 수 있다.

 

이 녀석을 사용하면 full screen 을 막을 수 있지만, FLAG_NO_FULLSCREEN 이 더 권장되는 flag 이다.

 

-

EditorInfo.IME_FLAG_NO_FULLSCREEN 를 보면..

일단 API level 11 에 추가되었다.

 

IME 가 fullscreen mode 로 작동하지 않도록 한다.
기본적으로 IME 는 상황에 따라 full screen 이 될 수 있다.
예를 들면 landscape mode 에서 small screen 이라, keypad 가 올라오면 나머지 보여지는 영역이 의미없을 정도로 작은 경우이다.
만약 이 flag 가 설정되면 호환되는(규칙을 따르는) IME 는 full screen mode 로 동작하지 않고, 앱의 다른 UI 들도 보이게 한다.
앱은 IME 에 따라 flag 가 항상 guarantee 되지 않는다는 점을 명심해야 한다.

 

설명을 보면, 이 flag 를 적용했음에도 full screen 이 된다면, 이는 IME 가 이 flag 를 지원하지 않는다고 볼 수 있다.

 

 

 

반응형

댓글