Hack to disable overscroll effect of swipe to update

This commit is contained in:
Dominik Schürmann
2014-09-13 23:08:04 +02:00
parent efdfd2544d
commit d5c9021b89
3 changed files with 486 additions and 15 deletions

View File

@@ -35,6 +35,7 @@ import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.NoScrollableSwipeRefreshLayout;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
@@ -81,7 +82,7 @@ import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
*/
public class KeyListFragment extends LoaderFragment
implements SearchView.OnQueryTextListener, AdapterView.OnItemClickListener,
LoaderManager.LoaderCallbacks<Cursor>, SwipeRefreshLayout.OnRefreshListener {
LoaderManager.LoaderCallbacks<Cursor>, NoScrollableSwipeRefreshLayout.OnRefreshListener {
private KeyListAdapter mAdapter;
private StickyListHeadersListView mStickyList;

View File

@@ -18,6 +18,7 @@
package org.sufficientlysecure.keychain.ui.widget;
import android.content.Context;
import android.support.v4.widget.NoScrollableSwipeRefreshLayout;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.AttributeSet;
@@ -25,8 +26,7 @@ import org.sufficientlysecure.keychain.util.Log;
import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
public class ListAwareSwipeRefreshLayout extends SwipeRefreshLayout {
public class ListAwareSwipeRefreshLayout extends NoScrollableSwipeRefreshLayout {
private StickyListHeadersListView mStickyListHeadersListView = null;
private boolean mIsLocked = false;
@@ -37,6 +37,7 @@ public class ListAwareSwipeRefreshLayout extends SwipeRefreshLayout {
public ListAwareSwipeRefreshLayout(Context context) {
super(context);
}
public ListAwareSwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@@ -47,6 +48,7 @@ public class ListAwareSwipeRefreshLayout extends SwipeRefreshLayout {
public void setStickyListHeadersListView(StickyListHeadersListView stickyListHeadersListView) {
mStickyListHeadersListView = stickyListHeadersListView;
}
public StickyListHeadersListView getStickyListHeadersListView() {
return mStickyListHeadersListView;
}
@@ -55,27 +57,22 @@ public class ListAwareSwipeRefreshLayout extends SwipeRefreshLayout {
mIsLocked = locked;
Log.d("ListAwareSwipeRefreshLayout", (mIsLocked ? "is locked" : "not locked"));
}
public boolean getIsLocked() {
return mIsLocked;
}
@Override
public boolean canChildScrollUp() {
if (mStickyListHeadersListView == null)
if (mStickyListHeadersListView == null) {
return super.canChildScrollUp();
}
return (
mIsLocked
||
(
return (mIsLocked || (
mStickyListHeadersListView.getWrappedList().getChildCount() > 0
&&
(
mStickyListHeadersListView.getTop() > 0
||
mStickyListHeadersListView.getFirstVisiblePosition() > 0
)
)
&& (mStickyListHeadersListView.getTop() > 0
|| mStickyListHeadersListView.getFirstVisiblePosition() > 0
))
);
}
}