问题描述
在我还实现Android的LayoutTransition之前,DragLinearLayout库的实现工作正常。
我收到此错误:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
And I get runtime errors on these two methods in the DragLinearLayout class :
1. addView(draggedItem.view, switchPosition); //called in on drag
2. onDrag(deltaY); // called in the onTouchEvent override method.
我通过在实现活动中重写onTouchEvent()并在触摸行时在DraggerLinearLayout上将setLayoutTransition参数设置为null来阻止崩溃,然后在调用onAnimaitonEnd时在DragLinearLayout中将其设置为null,我在实现活动中调用一个方法并使setLayoutTransition()参数不再为null。
但这会导致一些滞后,并且在您停止拖动并使其稳定时在拖动的行上消失一秒钟,然后重新出现。
无论如何,是否可以使用此库来实现LayoutTransition,或使用动画添加行并为DragLinearLayout的大小递增动画设置任何其他推荐的技术?
提前致谢。
1楼
因此,答案是可能的。
为此,请从库中获取代码并复制并粘贴到您自己的类中,以创建自己的DragLinearLayout。 或将库添加为外部库。 我们将这个新类称为DragLinearLayout2。
在DragLinearLayout2中,添加一个LayoutTransition对象作为成员变量:
private LayoutTransition layoutTransition;
然后,在startDrag()方法中,在该方法的顶部添加以下内容:
layoutTransition = getLayoutTransition();
if (layoutTransition != null) {
setLayoutTransition(null);
}
然后,在onDragStop()方法中,进入已实现的onAnimationEnd()方法并在末尾添加:
if (layoutTransition != null && getLayoutTransition() == null) {
setLayoutTransition(layoutTransition);
}
给我发消息,如果您需要我发送课程的我的版本。