【问题标题】:How to get ACTION_UP Touch Event for NestedScrollview如何获取 NestedScrollview 的 ACTION_UP 触摸事件
【发布时间】:2020-03-16 12:38:48
【问题描述】:

我想单击父视图 (LinearLayout) 侦听器,但由于 NestedScrollView(Child) 而无法单击。 所以我尝试 OnTouch NestedScrollView 但我只得到 ACTION_MOVE 但我需要 ACTION_UP 或 ACTION_DOWN 事件来执行功能

我尝试创建自定义 NestedScrollView 并覆盖 OnInterceptTouch 事件和 requestDisallow(false)

xml

https://pastebin.com/WYabtJM0

nestedScrollView?.setOnTouchListener { v, event ->
        when (event.action) {
            MotionEvent.ACTION_UP -> {
                if (bind?.mainViewModel?.buttonTappedToCheckForRestriction?.value != false && bind?.mainViewModel?.visbility?.value != false) {
                    bind?.mainViewModel?.buttonTappedToCheckForRestriction?.postValue(true)
                } else if (bind?.mainViewModel?.visbility?.value == true) {
                    bind?.mainViewModel?.buttonTappedToCheckForRestriction?.postValue(true)
                }
            }
        }
        return@setOnTouchListener false
    };

【问题讨论】:

  • 请分享您的xml文件
  • @Kirguduck 我编辑了我的问题,请查看它

标签: android touch-event ontouchlistener android-nestedscrollview


【解决方案1】:

要识别操作 NeedScrollView 的用户,您应该忽略此功能

scroller.setOnScrollChangeListener(object : NestedScrollView.OnScrollChangeListener{
@Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

        if (scrollY > oldScrollY) {
            Log.i(TAG, "Scroll DOWN");
        }
        if (scrollY < oldScrollY) {
            Log.i(TAG, "Scroll UP");
        }

        if (scrollY == 0) {
            Log.i(TAG, "TOP SCROLL");
        }

       if (scrollY == ( v.getMeasuredHeight() - v.getChildAt(0).getMeasuredHeight() )) {
           Log.i(TAG, "BOTTOM SCROLL");
       }
   }

})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多