当在bottomsheet android内部的recyclerview时,防止用户在底层表中拖动

时间:2017-08-17 10:14:09

标签: android android-recyclerview bottom-sheet

我有相对布局作为底片行为。在relativelayout里面,我有imageview,在它下面是recyclerview。现在我想阻止用户在recyclerview中向下滑动时拖动。我已经尝试在onStateChanged方法中扩展设置模式,但它似乎不起作用,因为我有recyclerview。

mBottomSheetBehavior = BottomSheetBehavior.from(bottomsheetLayout);
    mBottomSheetBehavior.setPeekHeight(0);
mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
        @Override
        public void onStateChanged(@NonNull View bottomSheet, int newState) {

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

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

        }

    });

我的xml文件是:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:visibility="visible"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
    android:id="@+id/dragView1">




    <ImageView
        android:layout_width="32dp"
        android:src="@drawable/iv_close"
        android:padding="@dimen/margin_5"
        android:layout_marginTop="@dimen/margin_5"
        android:id="@+id/ivItemsClose"
        android:layout_marginRight="@dimen/margin_5"
        android:clickable="true"
        android:layout_alignParentRight="true"
        android:layout_height="32dp" />

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:id="@+id/rcBoutique"
        android:overScrollMode="never"
        android:layout_height="wrap_content"/>
</Relativelayout>

如何防止拖拽以使底片不会塌陷?

2 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,然后我在RecyclerView中使用android:nestedScrollingEnabled="false"解决了这一问题,此行可以禁用嵌套滚动行为。

BottomSheet和Recyclerview都具有杂乱的行为,这就是导致此问题的原因。

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:id="@+id/rcBoutique"
    android:overScrollMode="never"
    android:layout_height="wrap_content"
    android:nestedScrollingEnabled="false"/>

答案 1 :(得分:0)

我使用ListView和BottomSheetDialog面临此问题。我相信这是同样令人讨厌的结果。尝试滚动列表可能会使底部页面消失。

我的解决方法是使用bottomSheetDialog.setCancelable(false);来防止bottomSheet对滚动操作作出反应。现在,滚动手势只能操纵ListView。对于这些操作,我有一个“确定”和“取消”按钮。