Uing? Uing!!

[안드로이드 팁] windowSoftInputMode : 키보드가 올라와도 화면이 가려지지 않았으면 좋겠어요! 본문

Android

[안드로이드 팁] windowSoftInputMode : 키보드가 올라와도 화면이 가려지지 않았으면 좋겠어요!

Uing!! 2020. 8. 6. 05:30
반응형

소프트키와 화면 변화

EditText는 정말 빈번하게 사용되는 뷰이다.

이 EditText를 터치하면 키보드(소프트키)가 화면 하단에서 나타난다.

그런데 가끔, 이 소프트키가 화면을 가리는 경우가 있다.

 

아래와 같은 상황이 그 예시이다.

(가장 처음으로 만들었던 '지나가리라'라는 어플리케이션의 화면이다.)

가장 왼 쪽의 레이아웃에서 키보드가 나오더라도 맨 오른쪽처럼 버튼을 유지하고 싶은데,

가운데의 스크린샷처럼 화면을 반쯤 가리면서 필요한 뷰들이 숨어 버린다. 

 

앗 재난문자가

 

windowSoftInputMode

windowSoftInputMode를 이용하면 키보드가 나타나고 사라졌을 때의 화면 변화 방식을 지정해 줄 수 있다.

가장 대표적인 설정값은 "adjustResize"이다.

이 값은 소프트키가 올라왔을 때 남은 화면 사이즈에 따라 레이아웃을 적절하게 변형시켜 준다.

 

AndroidManifest.xml 파일의 수정하고자 하는 activity 태그에 접근한 후,

아래와 같이 android:windowSoftInputMode="adjustResize"를 설정해 주면 된다.

        <activity
                android:name=".EditActivity"
                android:configChanges="keyboardHidden|orientation"
                android:windowSoftInputMode="adjustResize"
                android:screenOrientation="portrait" />

 

그 외의 설정값

windowSoftInputMode에는 adjustResize 외에도 여러 상태값들이 존재한다.

구체적으로는 stateUnspecified, stateUnchanged, stateHidden, stateAlwaysHidden, stateVisible, stateAlwaysVisible, adjustUnspecified, adjustResize, adjustPan의 설정값들을 활용할 수 있다.

각각에 대한 자세한 내용은 아래 공식 문서에서 확인할 수 있다!

 

<액티비티>  |  Android 개발자  |  Android Developers

Declares an activity (an Activity subclass) that implements part of the application's visual user interface. All activities must be represented by {@code } elements in the manifest file. Any that are not declared there will not be seen by the system…

developer.android.com

 

이 글을 '안드로이드 삽질일기'에 쓸지 '내 맘대로 안드로이드'에 쓸지 잠시 고민했다.

실제로 적용을 하기는 했지만, windowSoftInputMode에 대해 정리하기 위해 적용한 것이어서 후자로 결정했다.

 

반응형
Comments