'Show and hide a View with a slide up/down animation android studio

I have a problem hiding the BottomNavigationView since there is a space left over and I don't know what to do in that case, I don't know what property to use so that the entire BottomNavigationView is hidden, I would appreciate any advice or solution to my problem

Activity_main.XML

<?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:id="@+id/body_container"
    app:hideOnScroll="true"
    android:background="@color/light_color"
    tools:context=".navigation_bottom">

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_margin="30dp"
        android:elevation="2dp"
        android:background="@drawable/round_corner"
        app:menu="@menu/item_menu"
        app:itemRippleColor="@android:color/transparent"
        app:itemIconSize="30dp"
        app:labelVisibilityMode="labeled"
        app:itemTextColor="@drawable/text_selector"
        app:itemIconTint="@drawable/item_selector"
        app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior"
        app:hideOnScroll="true"
        android:layout_gravity="bottom"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Activity_navigation_bottom

<?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:id="@+id/body_container"
    app:hideOnScroll="true"
    android:background="@color/light_color"
    tools:context=".navigation_bottom">

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_margin="30dp"
        android:elevation="2dp"
        android:background="@drawable/round_corner"
        app:menu="@menu/item_menu"
        app:itemRippleColor="@android:color/transparent"
        app:itemIconSize="30dp"
        app:labelVisibilityMode="labeled"
        app:itemTextColor="@drawable/text_selector"
        app:itemIconTint="@drawable/item_selector"
        app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior"
        app:hideOnScroll="true"
        android:layout_gravity="bottom"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

ScrollHandler.kt


class ScrollHandler : CoordinatorLayout.Behavior<BottomNavigationView>()  {

    override fun layoutDependsOn(
        parent: CoordinatorLayout,
        child: BottomNavigationView,
        dependency: View
    ): Boolean {
        return dependency is FrameLayout
    }
    override fun onStartNestedScroll(
        coordinatorLayout: CoordinatorLayout,
        child: BottomNavigationView,
        directTargetChild: View,
        target: View,
        nestedScrollAxes: Int
    ): Boolean {
        return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL
    }
    override fun onNestedPreScroll(
        coordinatorLayout: CoordinatorLayout,
        child: BottomNavigationView,
        target: View,
        dx: Int,
        dy: Int,
        consumed: IntArray
    ) {
        if (dy < 0) {
            showBottomNavigationView(child)
        } else if (dy > 0) {
            hideBottomNavigationView(child)
        }
    }
    private fun hideBottomNavigationView(view: BottomNavigationView) {

        view.animate().translationY(view.height.toFloat())
    }

    private fun showBottomNavigationView(view: BottomNavigationView) {
        view.animate().translationY(0f)
    }
}

MainActivity.kt


class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    private var bottomNavigationView: BottomNavigationView? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)

        bottomNavigationView = binding.space as BottomNavigationView
        val layoutParams = bottomNavigationView!!.layoutParams as CoordinatorLayout.LayoutParams
        layoutParams.behavior = ScrollHandler()

        setContentView(binding.root)
        initRecyclerView()
    }

I don't know what to try



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source