Leo*_*Leo 5 android listview focus touch slidingdrawer
我使用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;
}
Run Code Online (Sandbox Code Playgroud)
如果我注释掉onInterceptTouchEvent函数,一切似乎都能正常工作.
归档时间: |
|
查看次数: |
518 次 |
最近记录: |