2012-07-12 19 views
10

Mam niestandardową listę listView, która zawiera jeden przypięty nagłówek i x ilość widoków "push-up", które można przesuwać i ukrywać nad widokiem listy.Niestandardowy ListView z przypiętym nagłówkiem, powodując Janka przy ustawianiu wypełnienia

Mam załączony obraz, aby je wyjaśnić. Przepraszam za "czarną cenzurę", tylko po to, żeby ukryć logo klienta itp.

Mój problem polega na tym, że jeśli dodaję dopełnienie do przypiętego widoku Nagłówka, otrzymam elementy listview unoszące się za nim.

Widok przypiętego nagłówka jest zaimplementowany w taki sam sposób, jak w przypadku PinnedHeaderListView, czyli widoku statycznego i nagłówka w widoku listy.

Mam znaleźć sposób na włączenie dopełnienia, a to przez zastosowanie tego samego wypełnienia, co przypięty nagłówek, do rzeczywistego listView, ale tylko wtedy, gdy widoczny jest statyczny nagłówek.

Jednak wywołanie metody setPadding powoduje, że Jank jest dość widoczny i chciałbym go usunąć. Czy ktoś ma jakiś pomysł, jak usunąć ten jank?

Mam prostą aplikację z prostymi widokami i danymi fikcyjnymi, które nie pokazują tego szarpnięcia, więc może ilość janków zależy od złożoności układów komórek.

private void updateIfShouldShowStaticHeaderView() { 

    //unfortunately setting the padding of the listView causes JANK. 

    //any ideas? 
    int bottomOfFloatingHeader = floatingHeader.getBottom(); 
    if (bottomOfFloatingHeader < mHeaderViewHeight) { 
     staticHeaderViewIsVisible = true; 
     staticHeader.setVisibility(View.VISIBLE); 

     //need to set padding of listView to avoid having list-view items float behind my padded static header 
     setPadding(0, staticHeader.getPaddingTop(), 0, getPaddingBottom()); 
    } else { 
     staticHeaderViewIsVisible = false; 
     staticHeader.setVisibility(View.INVISIBLE); 
     //need to set padding of listView to avoid having list-view items float behind my padded static header 
     setPadding(0, 0, 0, getPaddingBottom()); 
    } 
} 

Najpierw tutaj jest obraz przedstawiający popychane-up nagłówków showing the pushed-up headers

Oto obraz pokazujący jak rzeczy się wyciągnąć za wyściełanym statycznej przypięty widzenia. Warto zauważyć, że działa tak, jak zamierzam, jeśli dostosuję dopełnienie listy, ale otrzymam Jank (spowolnienie), w momencie włączania/wyłączania statycznego widoku nagłówka.

showing the error that is visible if I do not adjust padding

+5

+1 za bardzo ładne zdjęcia, fajne prace artystyczne :) –

+0

plz to nie na twoje pytanie, ale czy powiesz mi, w jaki sposób zorganizowałeś swój widok listy i aplikacji? – Angelika

Odpowiedz

0

Od setPadding na ListView spowoduje layoutu połączeń, to będzie bardzo ineffecient, szczególnie w przypadkach złożonych komórek ListView. Rozwiązaniem jest dodanie grafiki tła do przypiętego nagłówka, który reprezentuje wypełnienie, które jest potrzebne. Oznacza to, że cały przypięty nagłówek jest pełny. Elementy widoku listy zostaną narysowane za tą grafiką. To jest rozwiązanie, z którego skorzystaliśmy.

Działa, ale lepiej byłoby przyciąć listView.

Powiązane problemy