如何检测 ScrollView 的触摸事件?

How to detect touch event at ScrollView?

在解释之前,我不想在Scrollview内部Scrollview使用TouchEvent。

我想在触及 scrollView 时制作弹出窗口 window。但是用onTouchEvent不是只能检测ACTION_MOVE, UP, DOWN吗?

我使用了手势检测器。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read);

        ScrollView readScroll = (ScrollView)findViewById(R.id.readScrollView);
        TextView textView = (TextView)findViewById(R.id.TextView);
        String filePath = getIntent().getStringExtra("File_Path");

        textView.setText(readFile(filePath));

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        Toast.makeText(ReadActivity.this, "onKeyUp", Toast.LENGTH_SHORT).show();
        return false;
    }

但它不起作用。 我认为它被禁用是因为 scrollView。

如何检测scrollView的触摸事件?

正如您在问题中已经提到的,onTouchEvent 确实有 ACTION_UP 意味着 handle when touch up

所以你想观察滚动是向上还是向下移动。

先结帐docs

实施:

scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

    }
});

如果您要检查它是向上运动还是向下运动,只需简单地比较 scrollXoldScrollX,横向 scrollYoldscrollY