2017-11-25 55 views
0

我的应用程序有3个片段正在通过BottomNavigationView从mainActivity充气。其中一个片段使用RecyclerView并且可滚动,BottomNavigationView中的recyclerView中的最后一项正在被掩盖。根据谷歌的指导方针bottomNavigationView应该隐藏向下滚动并显示在向上滚动。它很容易让它隐藏在mainAcitivity中,但当Im试图从另一个片段中隐藏它时它不起作用。我如何正确地做到这一点? 这从recyclerView检查代码的滚动状态:隐藏BottomNavigationView从不同的片段

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

而应该叫在MainActivity这种方法,隐藏了bottomNavigationView:

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

回答

0

试试这个

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

当您使用从片段的活动方法,那么你必须创建你的方法公开,你可以通过类型转换来访问该方法。

+0

现在工作,谢谢! –