feat: QMUIStickySectionLayout support different height stick view

This commit is contained in:
zixiaoweng
2023-09-07 14:17:45 +08:00
parent 8d76fb66dd
commit a59effa959
3 changed files with 14 additions and 4 deletions
@@ -13,7 +13,7 @@ object Dep {
object QMUI {
const val group = "com.qmuiteam"
const val qmuiVer = "2.1.0.18"
const val qmuiVer = "2.1.0.21"
const val archVer = "2.1.0.4"
const val typeVer = "0.1.0.8"
@@ -17,6 +17,7 @@
package com.qmuiteam.qmui.widget.section;
import android.graphics.Canvas;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
@@ -163,8 +164,14 @@ public class QMUIStickySectionItemDecoration<VH extends QMUIStickySectionAdapter
setHeaderVisibility(true);
int contactPoint = sectionContainer.getHeight() - 1;
final View childInContact = parent.findChildViewUnder(parent.getWidth() / 2, contactPoint);
View secondChild = linearLayoutManager.findViewByPosition(firstVisibleItemPosition + 1);
View firstChild = linearLayoutManager.findViewByPosition(firstVisibleItemPosition);
View childInContact = null;
if (firstChild != null && firstChild.getTop() == 0) {
childInContact = firstChild;
} else {
childInContact = secondChild;
}
if (childInContact == null) {
mTargetTop = parent.getTop();
ViewCompat.offsetTopAndBottom(sectionContainer, mTargetTop - sectionContainer.getTop());
@@ -173,7 +180,9 @@ public class QMUIStickySectionItemDecoration<VH extends QMUIStickySectionAdapter
if (mCallback.isHeaderItem(parent.getChildAdapterPosition(childInContact))) {
mTargetTop = childInContact.getTop() + parent.getTop() - sectionContainer.getHeight();
ViewCompat.offsetTopAndBottom(sectionContainer, mTargetTop - sectionContainer.getTop());
if (mTargetTop <= 0) {
ViewCompat.offsetTopAndBottom(sectionContainer, mTargetTop - sectionContainer.getTop());
}
return;
}
@@ -25,6 +25,7 @@ import androidx.recyclerview.widget.RecyclerView;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;