Android
[Android] fitSystemWindows
onemask
2021. 8. 21. 16:27
Intro
개발을 하다가 뷰 하단에 빈 영역이 남는 현상이 있었다.
예를 들자면 아래와 같다.
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
...
<FrameLayout
android:id="@+id/frame"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/b"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/a" />
</androidx.constraintlayout.widget.ConstraintLayout>
내가 생각한 예상 대로라면 FrameLayout 영역 또한 마찬가지로 A - B 영역 안에 잡혀야 하는데 아무리 해도
FrameLayout 하단의 영역이 B 의 Top 까지 오지 않는 현상이 있었다.
자세히 보니 FrameLayout 영역에 android:fitSystemWindows 라는 attribute가 적용이 되어 있었다.
이것이 무엇인고 찾아보니
statusbar나 naivigationbar, Soft Key 같은 system windows 영역에 맞춰 뷰의 레이아웃이 적용하는 attribute 였다.
값이 true라면 system window 가 적용될 padding 이 적용 되는데, 나는 아마 해당 padding 영역을 보며 왜 안 없어지지 ? 🤔 라며 고민을 했었다.
Conclusion
즉 android:fistYstemWindows = true/ false
해당 속성은 뷰가 차지 할 수 있는 영역을 상태바, 소프트키 영역을 제외한 영역까지 확장해주는 역할을 해 준다.
Ref
https://developer.android.com/reference/android/view/View#attr_android:fitsSystemWindows
https://androidhuman.tistory.com/560
LIST