8

我有一个用于自定义的LinearLayoutwith属性。像这样 :layoutAnimationExpandableListView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layoutAnimation="@drawable/list_layout_controller"
    android:orientation="vertical" >

当我单击列表时,将显示动画。但它只工作一次,并且不会在下次单击时为列表设置动画。为什么?

请让我知道,如果您需要更多描述。

谢谢

4

5 回答 5

10

布局动画在视图添加到布局时运行。因此,您必须在每次展开/折叠时手动添加/删除视图,布局动画才能正常工作。

为此,您可以维护一个以列表索引为键的视图 Map。每次点击时,只需从地图中选择相应的项目并添加到您的布局中。动画将在该视图上运行,您的问题已得到解决。

您也可以尝试通过更改onClick(). 但不确定这一点。试着让我知道。

希望有帮助。

于 2012-04-21T15:29:33.200 回答
9

首先你要声明

Animation  listanimation = AnimationUtils.loadAnimation(mainActivity.this, R.anim.list_layout_controller);

并且每次都是clearAnimation第一。在 LinearLayout 的点击事件中

 linearLayout.clearAnimation();
 linearLayout.startAnimation(listanimation);
于 2012-04-22T06:32:13.870 回答
3

称呼

listView.scheduleLayoutAnimation();

在列表中的所有更改之前

于 2012-12-13T05:39:41.107 回答
1

尝试在每个项目单击时重新启动动画:

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
      view.getAnimation().start();
      //your custom logic
}
});
于 2012-04-20T11:09:49.593 回答
-1

只需使用

public void startLayoutAnimation ()

http://developer.android.com/reference/android/view/ViewGroup.html#startLayoutAnimation()

于 2013-03-13T12:31:57.970 回答