我使用SlidingDrawer作为我的主要布局。在内容区域内我有一个片段(包含ListView)当活动首次加载时,一切都很棒,列表视图正确滚动。
当我开始一个不同的活动然后回来时,我尝试的第一个滚动动作被SlidindDrawer拦截,并打开或关闭它。只要您停止滚动并拿起手指,ListView就会再次滚动。
我希望ListView能够在活动恢复时滚动。而且通常能够控制SlidingDrawer是否是获得焦点的人。
更新
我已经将问题缩小了一点。我已经扩展了SLidingDrawer以允许使用以下代码单击句柄中的按钮。
Override
public boolean onInterceptTouchEvent(MotionEvent event) {
super.onInterceptTouchEvent(event);
if (mHandleLayout != null) {
int clickX = (int) (event.getX() - mHandleLayout.getLeft());
int clickY = (int) (event.getY() - mHandleLayout.getTop());
if (isAnyClickableChildHit(mHandleLayout, clickX, clickY))
return false;
}
return super.onInterceptTouchEvent(event);
}
private boolean isAnyClickableChildHit(ViewGroup viewGroup, int clickX, int clickY) {
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View childView = viewGroup.getChildAt(i);
if (TAG_CLICK_INTERCEPTED.equals(childView.getTag())) {
childView.getHitRect(mHitRect);
if (mHitRect.contains(clickX, clickY))
return true;
}
if (childView instanceof ViewGroup && isAnyClickableChildHit((ViewGroup) childView, clickX, clickY))
return true;
}
return false;
}
如果我注释掉onInterceptTouchEvent函数,一切似乎都能正常工作。
答案 0 :(得分:0)
我注意到您正在拨打super.onInterceptTouchEvent(event)
两次。为什么?
这可能就是问题的原因。