我有一个 LinearLayout,它出现在屏幕中间和我的列表视图上方(zorder)。这个Linearlayout由几个按钮组成。
我希望当我在此 LinearLayout 上滚动时,它不会捕获事件并让它进入列表视图下。当点击按钮时,他们会得到 onClick 事件。
我希望这很清楚...
我有一个 LinearLayout,它出现在屏幕中间和我的列表视图上方(zorder)。这个Linearlayout由几个按钮组成。
我希望当我在此 LinearLayout 上滚动时,它不会捕获事件并让它进入列表视图下。当点击按钮时,他们会得到 onClick 事件。
我希望这很清楚...
有关信息,这就是我解决问题的方法。希望代码清晰...
private Point p1;
private Point p2;
private int mTouchSlop;
public StickyView(Context context, AttributeSet attrs) {
super(context, attrs);
ViewConfiguration vc = ViewConfiguration.get(context);
mTouchSlop = vc.getScaledTouchSlop();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) {
listView.onTouchEvent(ev);
return super.onInterceptTouchEvent(ev);
} else if (ev.getAction() == MotionEvent.ACTION_MOVE) {
p2 = new Point(0, (int) ev.getY());
double distance = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
if (Math.abs(distance)> mTouchSlop) {
listView.onTouchEvent(ev);
return super.onInterceptTouchEvent(ev);
}
p1 = p2;
} else if (ev.getAction() == MotionEvent.ACTION_DOWN) {
p1 = new Point(0, (int) ev.getY());
listView.onTouchEvent(ev);
}
return super.onInterceptTouchEvent(ev);
}