2017-11-25 109 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

現在工作,謝謝! –