使用 LayoutTransition 实现时,DragLinearLayout 库在运行时崩溃
DragLinearLayout library crashing at runtime when implemented with LayoutTransition
在我还实现 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() 来阻止它崩溃 activity,并在触摸行时将 DraggerLinearLayout 上的 setLayoutTransition 参数设置为 null,然后在调用 onAnimaitonEnd 时在 DragLinearLayout 中,我调用我实现中的一个方法 activity 并使 setLayoutTransition() 参数不再为空。
但这会导致一些延迟,在您拖动的行上,当您停止拖动并让它稳定下来时,它会消失一秒钟然后重新出现。
是否有使用此库实现 LayoutTransition 的方法,或任何其他推荐的使用动画添加行的技术,以及为逐渐增加的 DragLinearLayout 设置动画的技术?
提前致谢。
所以答案是,有可能。
要做到这一点,请从库中获取代码并将其复制并粘贴到您自己的 class 中,从而制作您自己的 DragLinearLayout。或者将库添加为外部库。我们将这个新的 class 称为 DragLinearLayout2。
在DragLinearLayout2中,添加一个LayoutTransition对象作为成员变量:
private LayoutTransition layoutTransition;
然后,在 startDrag() 方法中,在方法的顶部添加:
layoutTransition = getLayoutTransition();
if (layoutTransition != null) {
setLayoutTransition(null);
}
然后,在 onDragStop() 方法中,进入已实现的 onAnimationEnd() 方法并在末尾添加:
if (layoutTransition != null && getLayoutTransition() == null) {
setLayoutTransition(layoutTransition);
}
如果您需要我向您发送我的 class 版本,请给我留言。
在我还实现 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() 来阻止它崩溃 activity,并在触摸行时将 DraggerLinearLayout 上的 setLayoutTransition 参数设置为 null,然后在调用 onAnimaitonEnd 时在 DragLinearLayout 中,我调用我实现中的一个方法 activity 并使 setLayoutTransition() 参数不再为空。
但这会导致一些延迟,在您拖动的行上,当您停止拖动并让它稳定下来时,它会消失一秒钟然后重新出现。
是否有使用此库实现 LayoutTransition 的方法,或任何其他推荐的使用动画添加行的技术,以及为逐渐增加的 DragLinearLayout 设置动画的技术?
提前致谢。
所以答案是,有可能。
要做到这一点,请从库中获取代码并将其复制并粘贴到您自己的 class 中,从而制作您自己的 DragLinearLayout。或者将库添加为外部库。我们将这个新的 class 称为 DragLinearLayout2。
在DragLinearLayout2中,添加一个LayoutTransition对象作为成员变量:
private LayoutTransition layoutTransition;
然后,在 startDrag() 方法中,在方法的顶部添加:
layoutTransition = getLayoutTransition();
if (layoutTransition != null) {
setLayoutTransition(null);
}
然后,在 onDragStop() 方法中,进入已实现的 onAnimationEnd() 方法并在末尾添加:
if (layoutTransition != null && getLayoutTransition() == null) {
setLayoutTransition(layoutTransition);
}
如果您需要我向您发送我的 class 版本,请给我留言。