2016-12-01 826 views
5

我有一個BottomSheetDialogFragmentRecyclerView。問題是,只要RecyclerView沒有向上滾動(當前我無法滾動我的RecyclerView,因爲嘗試將總是關閉BottomSheetDialogFragment),所以我想要禁用BottomSheetDialogFragment的拖動關閉功能。任何想法如何實現這一目標?BottomSheetDialogFragment - 允許滾動的子節點

+0

您可以使用NestedScrollView作爲RecyclerView的父級。它可能有幫助。 –

+0

+0

這沒有幫助。 'RecyclerView'支持作爲一個嵌套滾動視圖開箱即用... – prom85

回答

0

變化在BottomSheetDialogFragment在setupDialog方法的行爲:

CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams(); 
     final CoordinatorLayout.Behavior behavior = layoutParams.getBehavior(); 
     if (behavior != null && behavior instanceof BottomSheetBehavior) { 
      ((BottomSheetBehavior) behavior).setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { 
       @Override 
       public void onStateChanged(@NonNull View bottomSheet, int newState) { 
        if (newState == BottomSheetBehavior.STATE_HIDDEN) { 
         dismiss(); 
        } 

        if (newState == BottomSheetBehavior.STATE_DRAGGING) { 
         ((BottomSheetBehavior) behavior).setState(BottomSheetBehavior.STATE_EXPANDED); 
        } 


       } 

       @Override 
       public void onSlide(@NonNull View bottomSheet, float slideOffset) { 

       } 
      }); 
     } 
+1

這將完全禁用關閉拖動功能,但我可以檢查'RecyclerView'是否也滾動到頂部,那麼這應該工作 – prom85

+0

不適用於Nestedscrollview –

0

只是把它作爲一個BottomSheetDialog,並簡單地禁用其拖動或滑動時聯繫。

當創建BottomSheetDialog它會自動換行佈局在 CoordinatorLayout,所以如果你想從您的視圖的行爲,請撥打

最終BottomSheetBehavior行爲= BottomSheetBehavior .from((View)view.getParent());

然後通過這種行爲,你可以做你所需要的。

final BottomSheetBehavior behavior = BottomSheetBehavior.from((View) view.getParent()); 
    behavior.setHideable(false); 
    behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { 
     @Override 
     public void onStateChanged(@NonNull View bottomSheet, int newState) { 

     } 

     @Override 
     public void onSlide(@NonNull View bottomSheet, float slideOffset) { 
      behavior.setState(BottomSheetBehavior.STATE_EXPANDED); 
     } 
    }); 

這對我有效,希望它有幫助。