728x90
Bottom Sheet 내부에 EditText를 넣으면 상황에 따라 상하 컴포넌트나 BottomSheet 윗부분이 화면 영역을 넘어가버려 사용에 불편한 경우가 있습니다.
이럴 경우 Bottom Sheet Style에 아래 item을 설정해 주면 됩니다.
<item name="android:windowIsFloating">false</item>
<item name="android:windowSoftInputMode">adjustResize</item>
그리고 BottomSheet의 onCreate()에서 아래와 같이 선언해줍니다.
setStyle(BottomSheetDialogFragment.STYLE_NORMAL, R.style.CustomBottomSheetDialogTheme)
android:windowIsFloating
- 의미: 이 속성은 창이 플로팅(floating) 창인지 여부를 설정합니다. 플로팅 창은 일반적인 Activity 창과는 다르게, 독립된 팝업처럼 동작하며, 화면의 전체를 차지하지 않고 일부를 덮는 창입니다.
- 설정 값:
- true: 창을 플로팅 창으로 설정합니다. 보통 다이얼로그 스타일의 창을 구현할 때 사용합니다. 플로팅 창은 크기가 고정되어 있고, 상단 상태 표시줄과 하단 내비게이션 바를 포함하지 않으며, 배경이 반투명해지는 효과를 가질 수 있습니다.
- false: 창이 일반적인 전체 화면 창으로 동작합니다. 일반적으로 화면 전체를 차지하고 플로팅 효과는 없게 됩니다.
android:windowSoftInputMode
- 의미: 이 속성은 소프트 키보드가 나타날 때 창의 레이아웃이 어떻게 반응할지 설정합니다. 즉, 소프트 키보드가 나타났을 때 화면이 어떻게 처리될지를 결정하는 중요한 속성입니다.
- 주요 옵션:
- adjustResize: 소프트 키보드가 화면에 나타나면 창의 크기가 줄어들어서 키보드가 나타난 후에도 콘텐츠가 키보드에 가려지지 않도록 창의 크기를 조정합니다.
- adjustPan: 소프트 키보드가 나타나면 창의 크기를 줄이지 않고, 창 자체가 위로 밀리면서 포커스 된 입력 필드(예: EditText)가 키보드 위로 보이도록 합니다.
728x90