如何在ScrollView上检测触摸事件?

时间:2018-04-05 05:13:30

标签: android android-scrollview ontouchlistener

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

我想在触摸scrollView时制作弹出窗口。但要使用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上检测触摸事件?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

首先结帐docs

实施:

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

    }
});

如果您正在检查它是向上还是向下运动,只需比较 scrollX oldScrollX ,水平滚动 oldscrollY