【问题标题】:Motion layout with RecyclerView, scroll at the end of recyclerview使用 RecyclerView 进行运动布局,在 recyclerview 末尾滚动
【发布时间】:2021-07-09 12:42:21
【问题描述】:

任何想法如何使用 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>

当一个 Item 被插入到 RecyclerView 中时,我希望它滚动到底部,所以我写了这个:

private fun scrollToBottom() {
    val position = routineSetsAdapter.itemCount - 1
    binding.motionLayoutContainer.transitionToEnd()
    binding.recyclerView.scrollToPosition(position)
}

它适用于一些项目,但在添加 10 个项目之后,如果你在顶部并添加一个项目,RecyclerView 会滚动,但它与 MotionLayout 不同步。有没有办法以编程方式滚动 recyclerView 的运动布局。如果您自己滚动,它会正常工作。

【问题讨论】:

  • binding.motionLayoutContainer.transitionToEnd(() -&gt; binding.recyclerView.scrollToPosition(position)); 你试过了吗?
  • 是的,结果相同。

标签: android android-recyclerview android-motionlayout android-scroll


【解决方案1】:

试试 recyclerView.smoothScrollToPosition(位置);

【讨论】:

  • 不是我想要的。这只是操纵 recyclerview 而不是 motionlayout。
猜你喜欢
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
相关资源
最近更新 更多