我想在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中使用,但似乎不起作用。
单个列表项:
答案 0 :(得分:1)
我想在recyclerview中创建可扩展项目,并且我认为使用
MotionLayout
创建动画将非常容易。
在RecyclerView
内使用MotionLayout来进行简单的扩展动画是过头的,只需在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);
});
答案 1 :(得分:1)
尝试将您的ConstraintLayout更新为androidx.constraintlayout:constraintlayout:2.0.0-rc1
,似乎这个袋子以及RecyclerView androidx.recyclerview:recyclerview:1.2.0-alpha05
都是固定的。