2012-04-26 108 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