2016-12-01 43 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); 
     } 
    }); 

这对我有效,希望它有帮助。