隐藏来自不同 Fragment 的 BottomNavigationView

3

我的应用程序有三个片段,它们从mainActivity中使用BottomNavigationView被膨胀。其中一个片段使用RecyclerView并且可滚动,由于BottomNavigationView在recyclerView中是最后一个项目,因此会被覆盖。根据Google的指南,bottomNavigationView应该在向下滚动时隐藏并在向上滚动时显示。从mainAcitivity中隐藏它很容易,但在尝试从其他片段隐藏它时却不起作用。我应该如何正确地做到这一点?

这个来自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);
    }
}
1个回答

3

试一试

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);
    }
});

当你从片段中使用activity方法时,你需要将你的方法设置为public,这样你可以通过类型转换来访问该方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接