5

ExpandableListViewのカスタマイズに使用されるlayoutAnimationプロパティのあるLinearLayoutがあります。このように:layoutAnimationは1回のみ動作します

<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

を使用する前に、uは項目を展開し、崩壊を意味..? – Ronnie

+0

はい、展開して項目を折りたたみます – Kermia

+0

list_layout_contorllerを貼り付けることはできますか?あなたはExpandableListViewを拡張していますか、新しいものを作成しましたか?いくつかのコードを見る必要があります。 – Ronnie

答えて

7

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

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

onClick()のビューの表示を変更することもできます。しかし、これについてはわからない。 私に連絡してください。

希望に役立ちます。

+0

ありがとうございます。この行は私に役立ちました: 'レイアウトアニメーションは、ビューがレイアウトに追加されたときに実行されます。 ' – Kermia

+1

@Kermia:あなたの問題の解決方法を教えてください。 –

+0

visibliltyを変更するヒントをありがとう:私は 'LayoutAnimationController'も使用しています。今度はレイアウトの可視性を 'GONE'に設定しました。次のステートメントでは' VISIBLE'に設定し、次のステートメントでは 'myLayout.setLayoutAnimation(myLayoutAnimController);と書いています。 – 0X0nosugar

1

てみてくださいありがとう:ビューがレイアウトに追加されたときに

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

いいえ、うまくいきません。 – Kermia

9

まずuが最初

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

と毎回clearAnimationを宣言したいです。 LinearLayout

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

コール

listView.scheduleLayoutAnimation()のclickeventにおいて 。

リスト内のすべての変更

関連する問題