我在用ImageView.onTouch()
。
我返回 falseACTION_MOVE
但仍然是onTouch()
事件被消耗。
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent ev) {
System.out.println("jan25 iv onTouch");
if (ev.getActionMasked()==MotionEvent.ACTION_DOWN) {
System.out.println("jan25 iv ACTION_DOWN");
return true;
}
if (ev.getActionMasked()==MotionEvent.ACTION_MOVE){
System.out.println("jan25 iv ACTION_MOVE");
return false;
}
if (ev.getActionMasked()==MotionEvent.ACTION_UP){
System.out.println("jan25 iv ACTION_UP");
return true;
}
System.out.println("jan25 iv false");
return false;
}
});
Layout:
<LinearLayout
android:id="@+id/ll_magic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/red"
android:orientation="vertical" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/abcd"
/>
</LinearLayout>
有什么想法请
看来回归false
来自onTouchEvent()
视图的回调仅在接收到第一个运动事件时有效ACTION_DOWN
。设置一个OnTouchListener
在非消费视图上具有相同的语义。这似乎是一个错误dispatchTouchEvent()
实施于ViewGroup
。不过,在这么长时间后它似乎不太可能被修复,因为这会破坏错误地依赖于这种行为的实现。
作为解决方法,您可以设置一个标志来指示触摸事件的处理,并在处理之前进行检查。该标志应在收到后重置ACTION_UP
or ACTION_CANCEL
运动事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)