为什么ViewGroup
唯一获得在onInterceptTouchEvent
ACTION_DOWN
?根据文档,只要返回false,它就会收到所有的事件类型。 http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent%28android.view.MotionEvent%29 点#3。onInterceptTouchEvent只得到ACTION_DOWN
示例代码:
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new Container(this));
}
private class Container extends LinearLayout {
public Container(Context context) {
super(context);
setBackgroundColor(0xFF0000FF);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
Log.i(TAG, "onInterceptTouchEvent");
int action = ev.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
Log.i(TAG, "onInterceptTouchEvent.ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:
Log.i(TAG, "onInterceptTouchEvent.ACTION_MOVE");
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
Log.i(TAG, "onInterceptTouchEvent.ACTION_UP");
break;
}
return super.onInterceptTouchEvent(ev);
}
}
}
哪有父母如果孩子已经发送了它,那么拦截事件? –
孩子不会派遣触摸事件(通常)。触摸事件从父母到孩子迭代地发泡。下来它在onTouchTouchEvent和即将到来的onTouchEvent。它继续冒泡直到有人回复真实。 – user123321
如果我有一个onTouchListener一查看,我添加到一个ViewGroup中。这个监听器被调用,开始一些行为,然后返回false。之后,ViewGroup可以“截取”事件?如果处理程序的代码已经执行? –