2017-11-25 39 views
0

私のアプリには、BottomNavigationViewでmainActivityから膨らんでいる3つのフラグメントがあります。フラグメントの1つはRecyclerViewを使用し、スクロール可能です.BottomNavigationViewによって、recyclerViewの最後の項目が隠されています。 Googleのガイドラインによると、bottomNavigationViewはスクロールダウン時に非表示になり、スクロールアップ時に表示されます。 mainAcitivityから非表示にするのは簡単ですが、他のフラグメントから隠そうとするとうまくいきません。どのようにこれを正しく行うのですか? スクロール状態のため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); 
     } 
    }); 

そして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

あなたが使用している場合、この

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

これで動作しています、ありがとうございます! –