2012-04-26 57 views
1

我想讓我的ExpandableListView的孩子出現一個動畫。 由於我使用的是Android 2.2的API,我不能使用expandGroup(INT groupPos,布爾動畫)方法動畫ExpandableListView 2.2上的孩子

我使用的是動畫我從這裏得到:Android animate drop down/up view proper

和我「M我ExpandableListView適配器的getChildView方法像這樣將其設置爲我convertView:

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, 
     View convertView, ViewGroup parent) { 

      ... 

    ExpandCollapseAnimation animation = new ExpandCollapseAnimation(convertView, 500, 0); 
    convertView.setAnimation(animation); 
    return convertView; 
} 

當我點擊ExpandableListView的集團,首先它顯示了所有孩子的,沒有動畫,然後馬上就展開所有孩子都喜歡動畫NT。

我需要它來顯示動畫。 任何幫助都會非常棒。

回答

0

簡而言之,它非常堅硬,很多人都說它不可能做到這一點。它是android ListView/ExpandableListView的幾個缺點之一。如果你注意到,當你在ExpandableListView上調用expandGroup(int groupPosition)方法時,有一個方法有第二個參數,一個布爾值是否爲它的動畫。這個第二個動畫方法自從api level 14開始就已經出現了,這對我們這些想要在android 2.3.3和更低版本中爲子視圖創建動畫的人沒有多大幫助。

它顯示孩子然後動畫他們的原因是因爲在Java中,每一行都是一個接一個地運行。因此,您正在擴大組視圖,然後下一行是動畫行。多數民衆贊成在多大程度上。但要正確地爲組視圖的子組製作動畫,您必須重寫ExpandableListView類本身內的一個方法。我不推薦它,因爲它有很多工作

我遇到的最好的解決方法是最初將孩子的高度設置爲0像素。這種方式當android操作系統佈局你的看法,似乎它不在那裏。那麼你可以將你的孩子從0像素高度移動到你想要的高度。希望有所幫助!

+2

對不起,但Java與它無關。而「一行接一行」的說法是一個非常簡單的計算機體系結構。 – AngraX 2012-12-04 03:56:27

相關問題