본문 바로가기

안드로이드 개발 팁/UI

Landscape 모드에서 EditText 입력시 전체화면으로 뜨지 않게 하려면?

애플리케이션 개발을 하다보면, 주로 Portrait 모드를 기반으로 UI를 고려하는 경우가 많습니다. 
대부분의 경우는 이 상태에서 Landscape 모드로 전환해도 별 탈 없이 돌아가지만, 일부 경우는 사소한 문제가 발생합니다.

그 중에서도 사용자 입장에서 가장 큰 불편을 주는 것이 바로 EditText가 아닐까 싶습니다.
하드웨어 키보드가 없는 단말에서는 EditText를 누르면 자동으로 소프트키보드가 표시되는데, Landscape 모드에서 텍스트를 입력하기 위해 EditTexf를 누르면 다음과 같이 입력 화면이 전체 화면으로 표시되는 경우가 대다수입니다.

 



그냥 잠깐 텍스트를 입력하고 다음 화면으로 넘어가는 것이라면 별 문제가 없겠지만, 채팅과 같이 끊임없이 다른 내용을 확인해야 하는 상황이라면 참 곤란한 상황이지요. 그렇다면, Landscape 모드에서 전체 화면으로 입력 창이 뜨지 않고, Portrait 모드와 같이 표시되도록 하는 방법은 무엇일까요?


답은 매우 간단합니다. EditText의 android:imeOptions 속성에 flagNoExtractUi 를 넣어주면 됩니다.
<EditText
	android:layout_height="wrap_content"
	android:layout_width="match_parent"
	android:imeOptions="flagNoExtractUi"
></EditText>

위와 같이 처리해주면 Landscape 모드에서 입력 창이 전체 화면으로 뜨는 것을 방지할 수 있습니다. 아래 화면은 EditText의 속성에 flatNoExtractUi 를 적용한 모습입니다.