2012-04-15 122 views
5

我有一个LinearLayoutlayoutAnimation财产是用于自定义ExpandableListView。像这样:layout动画只有一次

<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" > 

当我点击列表时,会显示动画。但它只能工作一次,并且不会在下一次点击中为列表添加动画。为什么?

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

谢谢

+1

通过点击ü意味着展开和折叠项目之前..? – Ronnie 2012-04-21 11:23:50

+0

是的,展开和折叠项目 – Kermia 2012-04-21 14:34:01

+0

您可以粘贴list_layout_contorller吗?你在扩展ExpandableListView还是创建了一个新的?需要看一些代码.. – Ronnie 2012-04-21 15:06:29

回答

7

布局的动画运行。因此,您必须手动添加/删除每个展开/折叠视图才能使布局动画起作用。

为此,您可以使用列表索引作为关键字来维护视图的Map。 每次您点击,只需从地图中选择相应的项目并添加到您的布局。动画将在该视图上运行,并且您的问题已修复。

您还可以尝试更改onClick()中视图的可见性。但不确定这一点。 试着让我知道。

希望有所帮助。

+0

非常感谢。这条线帮助了我:布局动画是在视图添加到布局时运行的 – Kermia 2012-04-22 18:58:33

+1

@Kermia:你能告诉我你是如何解决你的问题的吗? – 2013-03-21 09:46:58

+0

感谢您更改visiblilty的提示:我使用的'LayoutAnimationController'也只触发一次。现在我将布局可见性设置为'GONE',在下一个语句中我将其设置为'VISIBLE',并在以下语句中编写'myLayout.setLayoutAnimation(myLayoutAnimController);'完美地工作:-) – 0X0nosugar 2016-05-22 17:37:11

1

尝试重新启动在每个项目上单击动画:当视图添加到布局

lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
     view.getAnimation().start(); 
     //your custom logic 
} 
}); 
+0

不,不起作用 – Kermia 2012-04-21 06:35:02

9

首先ü要申报

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

,每次clearAnimation第一。 在的LinearLayout

的clickevent
linearLayout.clearAnimation(); 
linearLayout.startAnimation(listanimation); 
2

呼叫

listView.scheduleLayoutAnimation();

列表