diff --git a/build.gradle b/build.gradle index 03bced9..c20bca1 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:2.2.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c8c90b9..d0fa813 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Sep 02 10:00:37 CST 2015 +#Wed Oct 12 10:04:40 GMT+08:00 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/library/src/main/java/com/aspsine/swipetoloadlayout/SwipeToLoadLayout.java b/library/src/main/java/com/aspsine/swipetoloadlayout/SwipeToLoadLayout.java index 9233ab0..73e42a6 100644 --- a/library/src/main/java/com/aspsine/swipetoloadlayout/SwipeToLoadLayout.java +++ b/library/src/main/java/com/aspsine/swipetoloadlayout/SwipeToLoadLayout.java @@ -58,6 +58,7 @@ public class SwipeToLoadLayout extends ViewGroup { private View mHeaderView; private View mTargetView; + private View mTargetViewContainer; private View mFooterView; @@ -334,6 +335,22 @@ protected void onFinishInflate() { } else if (0 < childNum && childNum < 4) { mHeaderView = findViewById(R.id.swipe_refresh_header); mTargetView = findViewById(R.id.swipe_target); + try { + mTargetViewContainer = (View) mTargetView.getParent(); + if(mTargetViewContainer instanceof SwipeToLoadLayout) { + mTargetViewContainer = null; + }else{ + while(mTargetViewContainer.getParent() != null){ + if(mTargetViewContainer.getParent() instanceof SwipeToLoadLayout){ + break; + } + mTargetViewContainer = (View) mTargetViewContainer.getParent(); + } + } + } catch (Exception e) { + e.printStackTrace(); + mTargetViewContainer = null; + } mFooterView = findViewById(R.id.swipe_load_more_footer); } else { // more than three children: unsupported! @@ -365,7 +382,7 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { } // target if (mTargetView != null) { - final View targetView = mTargetView; + final View targetView = mTargetViewContainer == null ? mTargetView : mTargetViewContainer; measureChildWithMargins(targetView, widthMeasureSpec, 0, heightMeasureSpec, 0); } // footer @@ -934,16 +951,17 @@ public void run() { * @param loadingMore */ public void setLoadingMore(boolean loadingMore) { - if (!isLoadMoreEnabled() || mFooterView == null) { + if (mFooterView == null) { return; } - this.mAutoLoading = loadingMore; - if (loadingMore) { + if (loadingMore && isLoadMoreEnabled()) { + mAutoLoading = true; if (STATUS.isStatusDefault(mStatus)) { setStatus(STATUS.STATUS_SWIPING_TO_LOAD_MORE); scrollDefaultToLoadingMore(); } } else { + mAutoLoading = false; if (STATUS.isLoadingMore(mStatus)) { mLoadMoreCallback.onComplete(); postDelayed(new Runnable() { @@ -1050,7 +1068,7 @@ private void layoutChildren() { // layout target if (mTargetView != null) { - final View targetView = mTargetView; + final View targetView = mTargetViewContainer == null ? mTargetView : mTargetViewContainer; MarginLayoutParams lp = (MarginLayoutParams) targetView.getLayoutParams(); final int targetLeft = paddingLeft + lp.leftMargin; final int targetTop; @@ -1125,7 +1143,10 @@ private void layoutChildren() { mFooterView.bringToFront(); } } else if (mStyle == STYLE.BLEW || mStyle == STYLE.SCALE) { - if (mTargetView != null) { + if(mTargetViewContainer != null){ + mTargetViewContainer.bringToFront(); + } + else if (mTargetView != null) { mTargetView.bringToFront(); } }