Android 触摸事件传播
Android touch event propagation
据我了解,Android事件传播是从父元素到子元素,也就是说,它从最外层元素开始,然后从那里向内传播。我的问题是,为什么当我尝试垂直滚动包含在滚动视图上的 viewpager 内的列表视图时,列表视图移动,而不是 viewpager。
好吧,让我换个说法:
我正在尝试创建一个菜单,该菜单会在用户下拉视图寻呼机时出现,让我说得更清楚:
滚动视图
我的自定义菜单
ViewPager(带三个fragment,都有一个lisview)
列表视图
我知道我正在尝试做的事情有点奇怪,但暂时请耐心等待。 :)
如何"disable" 列表视图暂时滚动。
谢谢
看来你必须覆盖滚动事件。一个好的网页是 Disable scrolling in Android ListView 。
主要看dispatchTouchEvent
。片段:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
final int actionMasked = ev.getActionMasked() & MotionEvent.ACTION_MASK;
if (actionMasked == MotionEvent.ACTION_MOVE) {
// Ignore move events
return true;
}
我个人希望它比禁用滚动方法更简单。
据我了解,Android事件传播是从父元素到子元素,也就是说,它从最外层元素开始,然后从那里向内传播。我的问题是,为什么当我尝试垂直滚动包含在滚动视图上的 viewpager 内的列表视图时,列表视图移动,而不是 viewpager。 好吧,让我换个说法: 我正在尝试创建一个菜单,该菜单会在用户下拉视图寻呼机时出现,让我说得更清楚:
滚动视图 我的自定义菜单 ViewPager(带三个fragment,都有一个lisview) 列表视图
我知道我正在尝试做的事情有点奇怪,但暂时请耐心等待。 :)
如何"disable" 列表视图暂时滚动。
谢谢
看来你必须覆盖滚动事件。一个好的网页是 Disable scrolling in Android ListView 。
主要看dispatchTouchEvent
。片段:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
final int actionMasked = ev.getActionMasked() & MotionEvent.ACTION_MASK;
if (actionMasked == MotionEvent.ACTION_MOVE) {
// Ignore move events
return true;
}
我个人希望它比禁用滚动方法更简单。