5

Mam właściwość LinearLayout z layoutAnimation, która służy do dostosowywania ExpandableListView. w następujący sposób:layoutAnimacja działa tylko raz

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

Po kliknięciu na liście animacja zostanie wyświetlona. Ale działa tylko raz i nie będzie animować listy w następnym kliknięciu. Czemu?

Proszę dać mi znać, jeśli potrzebujesz więcej opisu.

Dziękuję

+1

przez kliknięcie u oznacza rozwijać i zwijać element ..? – Ronnie

+0

Tak, rozwiń i zwiń pozycję – Kermia

+0

Czy możesz wkleić listę list_layout_contorller? Czy rozszerzasz ExpandableListView lub tworzysz nowy? Potrzebujesz zobaczyć kod. – Ronnie

Odpowiedz

7

Układ Animacje są uruchamiane, gdy poglądy są dodawane do układu. Musisz więc ręcznie dodawać/usuwać widoki w każdym rozwinięciu/zwinięciu, aby animacja układu działała.

W tym celu można zachować mapę widoków z indeksem listy jako kluczem. Po każdym kliknięciu wybierz odpowiednie elementy z mapy i dodaj do swojego układu. Animacja zostanie uruchomiona w tym widoku, a Twój problem zostanie rozwiązany.

Możesz także spróbować zmienić widoczność widoków w onClick(). Ale nie jestem tego pewien. Spróbuj i daj mi znać.

Nadzieję, że pomaga.

+0

Dziękuję bardzo. Ta linia pomogła mi: 'Animacje layoutu są uruchamiane, gdy widoki są dodawane do layoutu' – Kermia

+1

@ Kermia: Czy możesz mi powiedzieć, jak rozwiązałeś swój problem? –

+0

Dzięki za podpowiedź, aby zmienić widoczność: Używam 'LayoutAnimationController', który również wystrzelił tylko raz. Teraz ustawiam widoczność Układu na "GONE", w następnej instrukcji ustawiam ją na "VISIBLE", aw poniższym stwierdzeniu piszę: myLayout.setLayoutAnimation (myLayoutAnimController); Działa doskonale :-) – 0X0nosugar

1

próbie ponownego uruchomienia animacji na każdej pozycji kliknij:

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

Nie, nie działa – Kermia

9

Najpierw u chcą zadeklarować

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

i za każdym clearAnimation pierwszy. W clickevent z LinearLayout

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

połączenia

listView.scheduleLayoutAnimation();

zanim wszystkie zmiany w wykazie