Simple&Natural

BottomNavigationView + Hiding On Scroll 본문

안드로이드(Android)/기타

BottomNavigationView + Hiding On Scroll

Essense 2020. 9. 28. 20:38
728x90

구글에서 찾아보면 대부분 소스코드 상에서 동적으로 변경하는 자료들이 많이 나온다.

xml 상에서 적용하는 코드를 원했는데 대표적으로 나오는 솔루션들이 잘 먹히지가 않아서

이것저것 바꾸어보며 동작 조건을 알아보았다.

 

액티비티나 프래그먼트 상의 소스코드는 별로 다를 게 없고 xml을 조건에 맞게 작성하는 것이 중요하다.

- 무슨 이유인지는 모르겠으나 ListView는 Hide가 동작하지 않으니 유의해야 한다.

- 최상위 레이아웃은 반드시 CoordinatorLayout으로 선언해주어야 한다.

 

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:menu="@menu/bottom_navigation_menu"
        app:layout_behavior="app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

activity_main.xml

 

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".HomeFragment">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </androidx.recyclerview.widget.RecyclerView>

</FrameLayout>

fragment_home.xml

 

 

 

 

 

 

728x90