我的应用程序有3个片段,这些片段是使用BottomNavigationView从mainActivity充气的。其中一个片段使用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);
}
}
答案 0 :(得分:2)
试试这个
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,你可以通过类型转换来访问该方法。