내 플레이에서 onFling을 사용하여 다음 활동으로 스 와이프합니다. 그러나보기 주위에 scrollview가있는 경우이 작동하지 않습니다.제스처를 scrollview와 함께 사용하는 방법 - 안드로이드?
분명히 제스처를 흡수하고 내 onFling을 중지합니다.
이 문제가 해결 되었습니까?
내 플레이에서 onFling을 사용하여 다음 활동으로 스 와이프합니다. 그러나보기 주위에 scrollview가있는 경우이 작동하지 않습니다.제스처를 scrollview와 함께 사용하는 방법 - 안드로이드?
분명히 제스처를 흡수하고 내 onFling을 중지합니다.
이 문제가 해결 되었습니까?
확인이 코드 조각 : 나는 새를 쓰기 때문에 (ScrollView
의 dispatchTouchEvent를 무시)
public class yourScrollView extends ScrollView{
//constructors and everything
//You might want to pass your GestureDetector (of course)
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
super.dispatchTouchEvent(ev);
return myGestureDetector.onTouchEvent(ev);
}
}
당신이 맞습니다. ScrollView는 기능 상속 때문에 제스처를 "도용"합니다. 이전에 부모 뷰 대신 ScrollView 자체에 onTouchListener를 적용하여이 문제를 해결했습니다.
어떻게하면됩니까? ScrollView가 ID를 던져 버린 것을 발견합니까? – chobo2
예, 잠시 동안 검색 한 후에 ScrollView 개체를 잡고 setOnTouchListener() –
을 사용하면이 문제에 가장 적합한 해결책입니다. – moonlightcheese
나는 대답을 말씀 드릴 수 없습니다. dispatchTouchEvent
을 ScrollView
으로 덮어 쓰는 것이 잘 작동하지만 제스처 처리기가 이어야하며이 super.dispatchTouchEvent
인 경우 이상한 방법으로 이벤트 좌표가 변경 될 수 있으므로이 작업을 수행해야합니다. 특히 뷰의 끝을지나 수직 스크롤 할 때 Y 값이 점프하는 것을 보았습니다. 스크롤 뷰 처리 전에 제스처 핸들러를 호출하면 내부 스크롤 된 좌표가 아닌 스크롤 뷰 좌표를 사용할 수 있습니다. 그래서
: 스크롤 뷰에서
public class yourScrollView extends ScrollView{
//constructors and everything
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
return myGestureDetector.onTouchEvent(ev) | super.dispatchTouchEvent(ev);
}
}
요소는 한 뷰가 스크롤 시작되지 않는 반응하지만, 제스처가 제대로 감지됩니다.
방금 같은 활동에 넣었습니까? 나는 이것을 시도했지만 그것이 작동하지 않는 것 같아요. – chobo2
아니요 'yourScrollView extends ScrollView' 클래스를 만들고이 코드를 –
에 작성해야합니다. 그런 다음 xml 레이아웃의 ScrollView 대신 클래스를 사용합니까? – chobo2