首页 > 解决方案 > 滑动手势防止点击下方

问题描述

我有一个充满碎片的活动。 活动

我需要观察活动的一个区域(片段 1 和 2),以便向下滑动手势,这将关闭活动。

我无法将滑动手势添加到整个活动中,因为 Fragment 3 需要刷新并且它们是相互冲突的动作。到目前为止,我已经尝试过:

  1. 添加一个涵盖片段 1 和 2 的视图并在那里添加侦听器。但是我需要在片段 1 中处理 ontouchevents。当我将 ontouchlistener 添加到新视图时,它确实关闭了活动,但阻止了点击到片段 1,因为我必须从 onDown 返回 true 以允许点击 onFling 覆盖

    private fun setUpSwipeToDismissActivity() {
    gestureDetector = GestureDetector(object : SimpleOnGestureListener() {
        override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
            println("****** on fling")
            val diffY = e2.rawY - e1.rawY
            if (abs(diffY) > SWIPE_THRESHOLD && abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
                if (diffY > 0) {
                    finish()
                    overridePendingTransition(R.anim.activity_alpa, R.anim.activity_slide_out_down)
                }
            }
            return false
        }
    
        override fun onDown(e: MotionEvent?): Boolean {
            return false
        }
    })
    swipe_detector_view.setOnTouchListener(touchListener)
    

    }

  2. 将滑动手势移动到片段 1,但它无法处理单击事件,因为 onDown 返回 true,然后触发投掷覆盖。

所以我需要能够滑动以关闭活动,但也允许片段 1 上的点击事件。

额外 - 片段 1 是一个 Web 视图,其中包含要单击的按钮

标签: androidkotlinandroid-fragmentsandroidx

解决方案


推荐阅读