android - 从不同的 fragment 中隐藏 BottomNavigationView

标签 android android-fragments bottomnavigationview

我的应用程序有 3 个 fragment ,它们使用 BottomNavigationView 从 mainActivity 中膨胀。其中一个 fragment 使用 RecyclerView 并且是可滚动的,而 BottomNavigationView 中的最后一项 recyclerView 被掩盖了。根据谷歌的指南 bottomNavigationView 应该在向下滚动时隐藏并在向上滚动时显示。很容易让它从 mainAcitivity 中隐藏起来,但是当我试图从另一个 fragment 中隐藏它时它不起作用。我该如何正确地做到这一点? 来自 recyclerView 的这段代码检查滚动状态:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            if (dy > 0) {
                //mainActivity.setNavigationVisibility(false);
            } else if (dy < 0 ) {
                //mainActivity.setNavigationVisibility(true);
            }
        }

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {

            super.onScrollStateChanged(recyclerView, newState);
        }
    });

并且应该在隐藏bottomNavigationView的mainActivity中调用这个方法:

public void setNavigationVisibility(boolean visible) {
    if (navigation.isShown() && !visible) {
        navigation.setVisibility(View.GONE);
    }
    else if (!navigation.isShown() && visible){
        navigation.setVisibility(View.VISIBLE);
    }
}

最佳答案

试试这个

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        if (dy > 0) {
            ((MainActivity)getActivity()).setNavigationVisibility(false);
        } else if (dy < 0 ) {
            ((MainActivity)getActivity()).setNavigationVisibility(true);
        }
    }

    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {

        super.onScrollStateChanged(recyclerView, newState);
    }
});

当你使用 fragment 中的 Activity 方法时,你必须创建你的方法 public 并且你可以通过类型转换访问该方法。

关于android - 从不同的 fragment 中隐藏 BottomNavigationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47489616/

相关文章:

Android:根据屏幕尺寸以编程方式调整尺寸

android - 选项卡执行 Android 中下一个 fragment 中存在的代码

android - 如何在 BottomNavigationView 中设置指标?

android - fragment 过渡时如何使第二个 fragment 重叠在第一个 fragment 上

java - MenuItem.setIcon 在使用 BottomNavigationBar 时抛出 NullPointerException

java - 具有BottomNavigationView的NavigationComponent查看项目选择

Android 应用程序 session 超时

android - 具有apk拆分的Firebase应用程序分发无法找到apk

android - 当应用程序处于特定状态时,以编程方式限制用户访问 Android/iPad/iPhone 设备

java - 在 GradientDrawable 上设置颜色不适用于 Fragment