2024년도 버전으로 업그레이드한 이후, Composer가 아닌 Empty Acitivity로 프로젝트를 만들게 되면
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
}
이렇게 생성이 된다.
ViewCompat.~~~가 추가가 됐는데, 이부분은 뷰에 WindowinsetsListener를 설정하여 시스템 UI(상태 표시줄, 네비게이션 바 등)가 뷰 영역을 침범하는 것을 방지해 준다고 한다. 그리고 뷰의 패딩을 조정하여 시스템 UI와 겹치지 않도록 한다.
이 코드는 기본적인 액티비티 설정을 위한 코드이며, 앱의 기능에 따라 추가적인 코드를 작성해야 한다.
나 역시 문제가 발생했는데 바텀네비게이션 하단에 여백이 너무 많이 생기며 타이틀바 아래에 UI가 사라져버리는 문제가 발생했다.
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
(v.layoutParams as ViewGroup.MarginLayoutParams).topMargin = systemBars.top
insets
}
해당부분을 이렇게 바꿔줘서 해결하였다.