2

我有我的自定义 BottomSheetBehavior:

public class CustomBehavior extends BottomSheetBehavior {

    public CustomBehavior(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, View 
    child, View target, int dx, int dy, int[] consumed) {
        super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, 
        consumed);
    }
}

我在我的 xml 代码中使用它。

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="350dp" 
        android:clipToPadding="true"
        android:background="@android:color/holo_orange_light"
        app:layout_behavior=
            "com.hackspace.bottomsheetproblem.CustomBehavior">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="text"/>

    </android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>

这种行为有效,一切都很好。但在回调中onNestedPreScrolldx 始终为零。记录如下内容:

dx: 0, dy: -1
dx: 0, dy: -70
dx: 0, dy: -108
dx: 0, dy: -85
dx: 0, dy: -44
dx: 0, dy: -16
dx: 0, dy: 16
dx: 0, dy: 44
dx: 0, dy: 62
dx: 0, dy: 84
dx: 0, dy: 58
dx: 0, dy: 54
dx: 0, dy: 43
dx: 0, dy: 17
dx: 0, dy: -20
dx: 0, dy: -42

实际上,我的目标是在默认的 BottomSheetBehavior 中对检测滑动进行一些更改。我需要我的自定义行为只对垂直(或几乎垂直)的滑动做出反应,甚至在几乎水平的滑动上也没有。

4

0 回答 0