트러블슈팅
문제 : Navigation Drawer 구현 시 다른 Fragment와의 상호작용이 안된다
시도
Navigation Drawer를 구현할 때 activity_main.xml 레이아웃을 ConstraintLayout 에서 DrawerLayout으로 바꿔서 생긴 문제인 것 같아서, activity_main.xml 레이아웃은 ConstraintLayout으로 하고 drawer_layout.xml 레이아웃을 따로 DrawerLayout으로 만들고 activity_main.xml 에 include하는 방식을 사용해봤다. 하지만 이렇게 하면 drawer와의 상호작용이 되지 않는 문제가 있었다.
원인
DrawerLayout을 만들 때 구조가 잘못되면 View 레벨에 문제가 생겨 동작하지 않는 것이였다.
해결시도
글을 참고해 DrawerLayout의 구조를 바꿨더니 해결되었다
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fr_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="250dp"
android:layout_height="match_parent"
android:backgroundTint="@color/white"
android:layout_gravity="start"
app:headerLayout="@layout/navigation_header"
app:menu="@menu/navigation_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>
다만 또 다른 문제가 있는데, 지금은 Navigation Drawer를 화면 슬라이드를 통해 열도록 구현했는데, 이렇게 하면 사용하가 Navigation Drawer의 존재도 모를 수 있게된다. 버튼을 통해 SetOnClickListener를 통해 열도록 구현하면 이런 문제가 해결되지만, Activity 위에 버튼을 만들면 Fragment에 가려져서 버튼이 보이지 않게 되는 문제가 있었다. 이 부분은 이후에 해결할 예정이다.
'TIL' 카테고리의 다른 글
TIL 54일차 - 최종프로젝트 (0) | 2024.06.06 |
---|---|
TIL 53일차 - 최종프로젝트 (1) | 2024.06.05 |
TIL 51일차 - 최종프로젝트 (0) | 2024.06.03 |
TIL 50일차 - 최종프로젝트 (0) | 2024.05.31 |
TIL 49일차 - 최종프로젝트 (0) | 2024.05.30 |