如何检测在水平滚动视图中向上滑动 - Android

How to detect swipe up in horizontal scroll view - Android

我有一个 Horizo​​ntalScrollView,它有 2 张水平滚动的卡片,我想检测向上滑动手势来执行某些操作,但那没有发生。

我在这里查看了其他解决方案,但它们对我的问题不起作用。

这是我的 XML:

 <HorizontalScrollView
    android:id="@+id/cardScroll"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/cardBalanceValue"
    android:layout_marginStart="20dp"
    android:layout_marginTop="60dp"
    android:scrollbars="none">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:verticalScrollbarPosition="left">

        <com.google.android.material.card.MaterialCardView
            android:id="@+id/cardOne"
            android:layout_width="200dp"
            android:layout_height="300dp"
            android:elevation="50dp"
            android:transitionName="cardTransition"
            app:cardBackgroundColor="@android:color/holo_blue_dark"
            app:cardCornerRadius="8dp"
            app:cardElevation="20dp"
            app:rippleColor="#102A5C"
            app:strokeWidth="2dp" />

        <com.google.android.material.card.MaterialCardView
            android:id="@+id/cardTwo"
            android:layout_width="200dp"
            android:layout_height="300dp"
            android:layout_marginStart="30dp"
            android:layout_marginEnd="20dp"
            app:cardBackgroundColor="@android:color/holo_orange_light"
            app:cardCornerRadius="8dp"
            app:cardElevation="20dp"
            app:strokeWidth="2dp" />
    </LinearLayout>
</HorizontalScrollView>

尝试使用 onTouchListner 例如:

   view.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN: {

                }
                case MotionEvent.ACTION_UP: {
                    //do something with up swipe
                }
            }

            return false;
        }
    });