package org.wikipedia.views; import android.content.Context; import android.support.v4.widget.SwipeRefreshLayout; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class SwipeRefreshLayoutWithScroll extends SwipeRefreshLayout { public SwipeRefreshLayoutWithScroll(Context context) { super(context); } public SwipeRefreshLayoutWithScroll(Context context, AttributeSet attrs) { super(context, attrs); } private View scrollableView; public void setScrollableChild(View scrollableView) { this.scrollableView = scrollableView; } @Override public boolean canChildScrollUp() { if (scrollableView == null) { return false; } return scrollableView.getScrollY() > 0; } /** * TODO: Remove this override when it's fixed in support-v4. * https://phabricator.wikimedia.org/T88904 * * This seems to have been fixed in the Support library, but not released yet: * https://github.com/android/platform_frameworks_support/commit/07a4db40e79aae23694b205f99b013ee2e4f2307 */ @Override public boolean onTouchEvent(MotionEvent event) { try { return super.onTouchEvent(event); } catch (RuntimeException e) { return false; } } }