ViewPager
을 부모로 사용할 수 있습니다 ViewPager
. 이렇게하면 자식 ViewPager
이 스크롤 할 수 있습니다.
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
try {
//Handle the issue only in lower versions of android
if (v != this && v instanceof ViewPager && CJRAppCommonUtility.getOSVersion() < android.os.Build.VERSION_CODES.HONEYCOMB) {
ViewPager viewPager = (ViewPager) v;
int currentPage = viewPager.getCurrentItem();
int size = viewPager.getAdapter().getCount();
//if ViewPager has reached its end and if user tries to swipe left allow the parent to scroll
if (currentPage == (size - 1) && dx < 0) {
return false;
}
//if ViewPager has reached its start and if user tries to swipe right allow the parent to scroll
else if (currentPage == 0 && dx > 0) {
return false;
}
//Allow the child to scroll hence blocking parent scroll
else {
return true;
}
}
return super.canScroll(v, checkV, dx, x, y);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
Android 개발자 사이트는 Viewgroup
에서 터치 이벤트를 처리하는 데 대한 좋은 설명이 있습니다. 여기에서 참조 할 수 있습니다 : http://developer.android.com/training/gestures/viewgroup.html
희망이 있습니다!
는 코드를 넣어! – Techfist
그 버그를 알고 있습니다. 'HorizontalScrollView' 또는'RecyclerView'를 사용하면 같은 문제가 발생합니다. 일반적으로 스크롤 할 수있는 것보다 아래로 스 와이프하면 기능이 그대로 남아 있습니다. – rekire
swipeRefresh 레이아웃을 사용하고 있으므로이 메서드를 호출하면됩니다. –