8

カスタマイズに使用されるLinearLayoutwithlayoutAnimationプロパティがありますExpandableListView。このような :

<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回だけ機能し、次のクリックでリストをアニメーション化することはありません。なんで?

さらに説明が必要な場合は、お知らせください。

ありがとうございました

4

5 に答える 5

10

ビューがレイアウトに追加されると、レイアウト アニメーションが実行されます。そのため、レイアウト アニメーションを機能させるには、展開/折りたたみのたびにビューを手動で追加/削除する必要があります。

このために、リスト インデックスをキーとしてビューのマップを維持できます。クリックするたびに、対応するアイテムをマップから選択してレイアウトに追加するだけです。アニメーションはそのビューで実行され、問題は修正されます。

でビューの可視性を変更して試すこともできます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 に答える