1

我正在尝试让我的 ExpandableListView 的孩子显示动画。由于我使用的是 Android 2.2 API,因此无法使用expandGroup(int groupPos, boolean animate)方法

我正在使用从这里获得的动画:Android animate drop down/up view proper

我在我的 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 的一个组时,它首先显示所有没有动画的子项,然后立即对所有子项执行我想要的展开动画。

我需要它来显示动画。任何帮助都会非常感激。

4

1 回答 1

0

简而言之,它非常困难,很多人说它不可能做到这一点。这是android ListView/ExpandableListView 的少数缺点之一。如果您注意到,当您在 ExpandableListView 上调用 expandGroup(int groupPosition) 方法时,有一个方法具有第二个参数,即是否为它设置动画的布尔值。这第二种动画方法自 api 级别 14 以来就已经存在,这对我们这些想要在 android 2.3.3 及更低版本上为子视图设置动画的人没有多大帮助。

它显示孩子然后为它们设置动画的原因是因为在 Java 中,每一行都是逐行运行的。因此,您正在扩展组视图,然后下一行是动画行。java就是这样。但是要正确地为组视图的子视图设置动画,您必须覆盖 ExpandableListView 类本身中的一个方法。我不推荐它,因为它的工作量很大

我遇到的最好的解决方法是最初将孩子的高度设置为 0 像素。这样,当 android 操作系统展示您的视图时,它似乎不存在。然后你动画你的孩子从 0 像素高度到你想要的高度。希望有帮助!

于 2012-10-04T17:13:51.873 回答