隐藏底部导航向上滚动显示向下滚动

时间:2020-06-22 19:09:47

标签: android bottomnavigationview

我有以下代码。如何隐藏向下滚动的底部导航并在用户向上滚动时显示? 我需要的是在用户向下滚动时隐藏的导航,一旦用户开始向上滚动,导航应重新出现。 XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolBar">

        <LinearLayout
           ////////
        </LinearLayout>

    </ScrollView>

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="@color/colorPrimary"
        app:itemTextColor="@drawable/selector"
        app:itemIconTint="@drawable/selector"
        app:menu="@menu/navigation"
        android:layout_alignParentBottom="true"
        app:labelVisibilityMode="labeled" />

</RelativeLayout>

JAVA

        BottomNavigationView bottomNavigationView = findViewById(R.id.navigation);
        bottomNavigationView.setSelectedItemId(R.id.navigation_one);
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.navigation_one:
                        return true;
                    case R.id.navigation_two:
                        startActivity(new Intent(getApplicationContext() ,Two.class));
                        overridePendingTransition(0,0);
                        finish();
                        return true;
                    case R.id.navigation_three:
                        startActivity(new Intent(getApplicationContext() ,Three.class));
                        overridePendingTransition(0,0);
                        finish();
                        return true;
                    case R.id.navigation_four:
                        startActivity(new Intent(getApplicationContext() ,Four.class));
                        overridePendingTransition(0,0);
                        finish();
                        return true;
                }
                return false;
            }
        });

1 个答案:

答案 0 :(得分:0)

如果您不想更改为协调器布局,可以执行以下操作:

  • setOnScrollChangeListener用于ScrollView检测滚动方向(上下)
  • 然后在onScrollChange方法中为bottomNavigationView设置动画,使其上下滑动(基于滚动方向)