有关于如何使用MotionLayout实现scrollToPosition的想法吗?
目前,我有一个RecyclerView和一些隐藏在滚动条上的标题,如果你滚动到顶部,就会显示出来。这就是场景:
<Transition
motion:constraintSetEnd="@+id/end"
motion:constraintSetStart="@id/start"
motion:duration="1000">
<OnSwipe
motion:touchAnchorId="@+id/header"
motion:dragDirection="dragUp"
motion:onTouchUp="stop" />
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@+id/header"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:visibility="visible"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintTop_toBottomOf="@id/toolbar" />
<Constraint
android:id="@+id/recycler_view"
android:layout_width="0dp"
android:layout_height="0dp"
motion:layout_constraintBottom_toBottomOf="parent"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintTop_toBottomOf="@id/header" />
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@+id/header"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:visibility="invisible"
motion:layout_constraintBottom_toTopOf="parent"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintStart_toStartOf="parent" />
<Constraint
android:id="@+id/recycler_view"
android:layout_width="0dp"
android:layout_height="0dp"
motion:layout_constraintBottom_toBottomOf="parent"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintTop_toBottomOf="@+id/toolbar" />
</ConstraintSet>
当一个项目被插入到RecyclerView中时,我希望它滚动到底部,所以我写了这个:
private fun scrollToBottom() {
val position = routineSetsAdapter.itemCount - 1
binding.motionLayoutContainer.transitionToEnd()
binding.recyclerView.scrollToPosition(position)
}
它对一些项目非常有效,但在添加了10个项目后,如果您在顶部并添加了一个项目,RecyclerView会滚动,但它与MotionLayout不同步。有什么方法可以滚动运动布局回收器程序查看。如果你自己滚动,它会正常工作。
尝试recyclerView.ssmoothScrollToPosition(位置(;