4

我想在 recyclerview 中创建可扩展的项目,我认为使用 MotionLayout 来创建动画会非常简单。我创建了运动场景并测试了当在回收站视图中视图不会动画时,单个项目可以自行工作。

我尝试显示所有调试信息,它说正在发生转换,但 recyclerview 没有显示任何动画。我尝试通知项目动画师动画已在我的视图中开始,但这不起作用。

override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
  recyclerView.itemAnimator?.onAnimationStarted(this@ViewHolder)
}
override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
  recyclerView.itemAnimator?.onAnimationFinished(this@ViewHolder)
}

我预计 motinolayout 状态转换将在 recyclerview 中起作用,但它们似乎不起作用。

单个列表项: 在此处输入图像描述

内表: 在此处输入图像描述

4

2 回答 2

3

我想在 recyclerview 中创建可扩展的项目,我认为使用MotionLayout它来创建动画会非常容易。

在内部使用 MotionLayoutRecyclerView进行简单的展开动画是多余的,您只需在RecyclerView Adapter onBindViewHolder. 然后,当您想要展开/折叠时,只需notifyItemchanged使用位置调用即可。这将节省您的一天。干杯!

在 RecyclerView 适配器内部,

holder.itemView.setOnClickListener(v -> {
    // Get the current state of the item
    boolean expanded = item.isExpanded();
    // Change the state
    item.setExpanded(!expanded);
    // Notify the adapter that item has changed
    notifyItemChanged(position);
});
于 2019-08-31T11:16:17.657 回答
1

尝试将您的 ConstraintLayout 更新为androidx.constraintlayout:constraintlayout:2.0.0-rc1似乎已修复此包以及 RecyclerView androidx.recyclerview:recyclerview:1.2.0-alpha05

于 2020-08-19T15:41:34.313 回答