Ped*_*o A 4 java android android-scrollview android-touch-event
我正在用Java创建一个Android应用程序,我<TextView>在屏幕上有很多,所有这些都定义了onTouchListeners.它们被包裹在一起,<ScrollView>因为它们占据的空间比屏幕上的空间大.
我的问题是:当我向上/向下滚动应用程序时,通过触摸屏幕并向上/向下移动我的手指,滚动按预期工作,但触摸的onTouchListener <TextView>也被触发(这也可能是预期的) -我不希望这发生.我想在触摸屏幕滚动它时忽略onTouchListener.
我怎么能做到这一点?我不想让我的函数在用户滚动时运行,并且"意外地"触发某个onTouchListener <TextView>.
Ped*_*o A 15
经过更多搜索,我找到了Stimsoni的解决方案.我们的想法是检查ACTION_DOWN和ACTION_UP事件之间的时间是否低于或高于给定的值ViewConfiguration.getTapTimeout().
从文档:
[返回]我们将等待查看触摸事件是点击还是滚动的持续时间(以毫秒为单位).如果用户未在此间隔内移动,则将其视为点击.
码:
view.setOnTouchListener(new OnTouchListener() {
private long startClickTime;
@Override
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
startClickTime = System.currentTimeMillis();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
if (System.currentTimeMillis() - startClickTime < ViewConfiguration.getTapTimeout()) {
// Touch was a simple tap. Do whatever.
} else {
// Touch was a not a simple tap.
}
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9606 次 |
| 最近记录: |