从不同的片段中隐藏 BottomNavigationView
Hiding BottomNavigationView from different fragment
我的应用程序有 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);
}
}
试试这个
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 并且您可以通过类型转换访问该方法。
我的应用程序有 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);
}
}
试试这个
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 并且您可以通过类型转换访问该方法。