문제 해결은 다른 답글에서 말씀드린대로 관련된 뷰의 Constraint를 설정함으로써 해결이 가능합니다.
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_nav_menu" />
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@id/nav_view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
추가로 fragment 대신에 FragmentContainerView를 사용하는건 권장하는게 구글의 입장입니다. 라이브러리 개발자의 트윗에 이유가 나옵니다. https://twitter.com/ianhlake/status/1220050760802566144
FragmentContainterView를 사용하면 아래처럼 navigation controller를 찾는 코드를 수정하면 됩니다.
NavHostFragment navHostFragment =
(NavHostFragment) supportFragmentManager.findFragmentById(R.id.nav_host_fragment)
navHostFragment.getNavController();
여담이지만, 레이아웃이 많이 복잡해 보이네요. 상단의 공지사항 부분의 컨트롤도 복잡해질 듯합니다.