2015-10-19 38 views
0

DragLinearLayout庫的實現工作正常,直到我還實現了Android的LayoutTransition。DragLinearLayout庫在使用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()崩潰,並設置setLayoutTransition參數爲空的DraggerLinearLayout當行被觸摸,然後在DragLinearLayout當onAnimaitonEnd被調用時,我在我的實現活動中調用一個方法,並使setLayoutTransition()參數不再爲空。

但是,這會導致一些滯後,並且在您停止拖動並讓它解決時拖動的那一行,它會消失一秒鐘,然後再次出現。

有沒有辦法用這個庫實現LayoutTransition,或者使用動畫來添加行的任何其他推薦技術,以及爲DragLinearLayout的遞增大小設置動畫效果?

在此先感謝。

回答

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); 
            } 

如果您需要我向您發送我的課程版本,請通知我。