如何检测 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) {
}
});
如果您要检查它是向上运动还是向下运动,只需简单地比较 scrollX 和 oldScrollX,横向 scrollY 和 oldscrollY
在解释之前,我不想在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) {
}
});
如果您要检查它是向上运动还是向下运动,只需简单地比较 scrollX 和 oldScrollX,横向 scrollY 和 oldscrollY