2013-04-29 13 views
9

Czy możliwe jest, aby pozycje w liście miały inną pozycję/indeks?Różne pozycje z pozycji ListView

Chcę, aby jeden element w moim ListView zawsze był na szczycie innych widoków w moim układzie.

Zobacz moją ilustrację tutaj:

enter image description here

Czerwony pasek w innym widoku poza ListView (w moim przypadku pionowej SeekBar).

Próbowałem dzwonić pod numer View.bringToFront(), ale to nie zadziałało.

Wszelkie pomysły?

+0

Podobnie jak dowolnej wartości można zmienić 'Z-index' tak, że obiekt porusza się do przodu lub do tyłu w pozycji widoku, gdy użytkownik wchodzi w interakcję ze stroną. – Andrew

+0

@Andrew zmieniając indeks Z widoku zmieni po prostu pozycję ** względem swoich widoków rodzeństwa **. W 'ListView' wszystkie pozycje na liście są rodzeństwem, ale zmiana indeksu Z nie będzie miała żadnego wpływu, ponieważ elementy listy nie pokrywają się. Zmiana indeksu Z jednego elementu na liście ** nie spowoduje przeskoczenia do przodu, aby znaleźć się przed innym widokiem, który ** nie jest rodzeństwem widoków w 'ListView' **. –

Odpowiedz

1

Oto jak pójdę o osiągnięcie efektu pragnienie:

Każda pozycja na liście powinna mieć czerwony pasek w nim, że to wysokość elementu. W ten sposób wszystkie czerwone paski ustawiają się tak, aby wyglądało, jakby był tylko jeden czerwony pasek, gdy w rzeczywistości jest jeden element.

Jeśli używasz FrameLayout, kolejność dzieci określa kolejność rysowania, na przykład trzecie dziecko FrameLayout pojawi się na pierwszym i drugim potomku.

Następnie w czasie wykonywania można ustawić czerwony pasek powyżej lub poniżej zawartości każdego elementu. W metodzie bindView adaptera można użyć metody bringToFront, aby ustawić czerwony pasek z przodu dla tego widoku. Nie zapominaj, że widoki są ponownie przetwarzane w ListView, więc będziesz musiał przesunąć czerwony pasek, aby za każdym razem korygować pozycję z.

Oto przykładowy plik XML w bardzo uproszczonym przykładzie dla elementu w widoku, daj mi znać, jeśli potrzebujesz więcej informacji.

item_red_bar_bottom.xml:

<FrameLayout ...> 
    <ImageView .../> <!-- Red bar on bottom --> 
    <FrameLayout ...> 
     <!-- Normal item contents go here --> 
    </FrameLayout> 
</FrameLayout> 
Powiązane problemy