使用Motionlayout嵌套SmartRefreshLayout,实现头部收缩效果,布局如下
<androidx.constraintlayout.motion.widget.MotionLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ctlHeader"
android:layout_width="0dp"
android:layout_height="150dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
</androidx.constraintlayout.widget.ConstraintLayout>
<Indicator
android:id="@+id/indicator"
android:layout_width="0dp"
android:layout_height="42dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ctlHeader" />
<SmartRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/indicator"
app:srlEnableAutoLoadMore="true"
app:srlEnableFooterFollowWhenNoMoreData="true"
app:srlEnableLoadMoreWhenContentNotFull="false">
<Header />
<RecyclerView />
<Footer />
</com.yuebuy.common.view.YbRefreshLayout>
</androidx.constraintlayout.motion.widget.MotionLayout>
motionScene配置的是向上滑动时收缩header,结果触发loadmore时footer会覆盖卡片,而不是在卡片下方显示。noMoreData状态显示没有问题。
是我使用问题还是bug,期待有人解答
6条答案
按热度按时间lymgl2op1#
使用Motionlayout嵌套SmartRefreshLayout,实现头部收缩效果,布局如下
motionScene配置的是向上滑动时收缩header,结果触发loadmore时footer会覆盖卡片,而不是在卡片下方显示。noMoreData状态显示没有问题。 是我使用问题还是bug,期待有人解答
请问这个问题你解决了吗?我还遇到了另一个问题,就是将嵌套了SmartRefreshLayout的RecyclerView往上滑动时,头部的head就会显示出来,而不是等RecyclerView滑动到了顶部在滑动才显示头部head
uqxowvwt2#
使用Motionlayout嵌套SmartRefreshLayout,实现头部收缩效果,布局如下
motionScene配置的是向上滑动时收缩header,结果触发loadmore时footer会覆盖卡片,而不是在卡片下方显示。noMoreData状态显示没有问题。 是我使用问题还是bug,期待有人解答
请问这个问题你解决了吗?我还遇到了另一个问题,就是将嵌套了SmartRefreshLayout的RecyclerView往上滑动时,头部的head就会显示出来,而不是等RecyclerView滑动到了顶部在滑动才显示头部head
这个问题我昨天遇到了,没找到资料,自己看源码解决了,需要代码吗?
在MotionLayout中的onNestedPreScroll方法里,通过target去判断有没有到达顶部,而这里的target是SmartRefreshLayout。
我们可以通过重写SmartRefreshLayout的onNestedPreScroll方法,判断如果父滚动view是MotionLayout的话,把传过去的this改成子view(在这里是RecyclerView)就可以了。
MotionLayout拿到的target是RecyclerView就可以正确判断是否在顶部
a14dhokn3#
使用Motionlayout嵌套SmartRefreshLayout,实现头部收缩效果,布局如下
motionScene配置的是向上滑动时收缩header,结果触发loadmore时footer会覆盖卡片,而不是在卡片下方显示。noMoreData状态显示没有问题。 是我使用问题还是bug,期待有人解答
请问这个问题你解决了吗?我还遇到了另一个问题,就是将嵌套了SmartRefreshLayout的RecyclerView往上滑动时,头部的head就会显示出来,而不是等RecyclerView滑动到了顶部在滑动才显示头部head
这个问题我昨天遇到了,没找到资料,自己看源码解决了,需要代码吗?
在MotionLayout中的onNestedPreScroll方法里,通过target去判断有没有到达顶部,而这里的target是SmartRefreshLayout。 我们可以通过重写SmartRefreshLayout的onNestedPreScroll方法,判断如果父滚动view是MotionLayout的话,把传过去的this改成子view(在这里是RecyclerView)就可以了。 MotionLayout拿到的target是RecyclerView就可以正确判断是否在顶部
优秀优秀,我下午按照你的方式试一下,谢谢啦
f1tvaqid4#
使用Motionlayout嵌套SmartRefreshLayout,实现头部收缩效果,布局如下
motionScene配置的是向上滑动时收缩header,结果触发loadmore时footer会覆盖卡片,而不是在卡片下方显示。noMoreData状态显示没有问题。 是我使用问题还是bug,期待有人解答
请问这个问题你解决了吗?我还遇到了另一个问题,就是将嵌套了SmartRefreshLayout的RecyclerView往上滑动时,头部的head就会显示出来,而不是等RecyclerView滑动到了顶部在滑动才显示头部head
这个问题我昨天遇到了,没找到资料,自己看源码解决了,需要代码吗?
在MotionLayout中的onNestedPreScroll方法里,通过target去判断有没有到达顶部,而这里的target是SmartRefreshLayout。 我们可以通过重写SmartRefreshLayout的onNestedPreScroll方法,判断如果父滚动view是MotionLayout的话,把传过去的this改成子view(在这里是RecyclerView)就可以了。 MotionLayout拿到的target是RecyclerView就可以正确判断是否在顶部
太帅了,你可以把代码贴出来吗?我刚才看了下你提到的onNestedPreScroll 并不能return view啊
u59ebvdq5#
使用Motionlayout嵌套SmartRefreshLayout,实现头部收缩效果,布局如下
motionScene配置的是向上滑动时收缩header,结果触发loadmore时footer会覆盖卡片,而不是在卡片下方显示。noMoreData状态显示没有问题。 是我使用问题还是bug,期待有人解答
请问这个问题你解决了吗?我还遇到了另一个问题,就是将嵌套了SmartRefreshLayout的RecyclerView往上滑动时,头部的head就会显示出来,而不是等RecyclerView滑动到了顶部在滑动才显示头部head
这个问题我昨天遇到了,没找到资料,自己看源码解决了,需要代码吗?
在MotionLayout中的onNestedPreScroll方法里,通过target去判断有没有到达顶部,而这里的target是SmartRefreshLayout。 我们可以通过重写SmartRefreshLayout的onNestedPreScroll方法,判断如果父滚动view是MotionLayout的话,把传过去的this改成子view(在这里是RecyclerView)就可以了。 MotionLayout拿到的target是RecyclerView就可以正确判断是否在顶部
太帅了,你可以把代码贴出来吗?我刚才看了下你提到的onNestedPreScroll 并不能return view啊
这个代码只是解决了头部判断是否到顶的问题,footer问题没见过,也没去解决
xzv2uavs6#
你可以用我的代码试试看,如果不能解决问题,可以加我q:508342550,我下午有空