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

 

View  |  Android 개발자  |  Android Developers

 

developer.android.com

https://androidhuman.tistory.com/560

 

액티비티 전체를 덮는 네비게이션 드로어 만들기

네비게이션 드로어는 꽤 오래 전부터 널리 사용되던 패턴 중 하나입니다. 그러다 보니, 공식 버전의 네비게이션 드로어가 없을 때부터 시작하여 현재 널리 사용되는 AppCompat 버전의 네비게이션

androidhuman.tistory.com

 

LIST