SlidingDrawer를 기본 레이아웃으로 사용합니다. 컨텐트 영역 안에는 조각 (ListView 포함)이 있습니다. 먼저 액티비티가 모두로드되면 목록 뷰가 제대로 스크롤됩니다.SlidingDrawer의 ListView가 onResume 이후 포커스를 잃습니다
다른 활동을 시작한 다음 다시 돌아올 때 내가 시도한 첫 번째 스크롤 동작은 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 함수를 주석 처리하면 모든 것이 정상적으로 작동하는 것 같습니다.
그래, 문제의 원인입니다. 그러나 첫 번째 줄에서 호출되는 이유는 클릭 가능한 단추를 끌 때도 끌기 동작을 사용 가능하게 설정하기 위해서입니다. 활동을 다시 시작한 후 몇 개의 이벤트에 대해 첫 번째 super.onInterceptTouchEvent를 비활성화하여 문제를 완화했습니다. – Leo