DragLinearLayout库的实现工作正常,直到我也实现了Android的LayoutTransition。
我收到此错误:
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()来阻止它崩溃,并且在触摸行时将DragLineLineoutLayout上的setLayoutTransition参数设置为null,然后在调用onAnimaitonEnd时在DragLinearLayout中,我在我的实现活动中调用一个方法并使setLayoutTransition()参数不再为null。
但是这会导致一些延迟,当你停止拖动并拖动它时,你会拖动它,它会消失一秒然后重新出现。
是否有使用此库实现LayoutTransition,或使用动画添加行的任何其他推荐技术,以及动画增加DragLinearLayout的大小?
提前致谢。
答案 0 :(得分:0)
所以答案是,这是可能的。
要做到这一点,请通过从库中获取代码并复制并粘贴到您自己的类中来创建自己的DragLinearLayout。或者将库添加为外部库。我们将这个新类称为DragLinearLayout2。
在DragLinearLayout2中,将LayoutTransition对象添加为成员变量:
private LayoutTransition layoutTransition;
然后,在startDrag()方法中,在方法的顶部添加:
layoutTransition = getLayoutTransition();
if (layoutTransition != null) {
setLayoutTransition(null);
}
然后,在onDragStop()方法中,进入实现的onAnimationEnd()方法并在最后添加:
if (layoutTransition != null && getLayoutTransition() == null) {
setLayoutTransition(layoutTransition);
}
如果您需要我发送我的课程版本,请给我留言。