2013-04-29 13 views
9

È possibile creare elementi in un ListView con una posizione z/indice diversa?Posizione z diversa per gli oggetti ListView

Voglio un elemento nel mio ListView per essere sempre in cima alle altre viste nel mio layout.

Vedi il mio illustrazione qui:

enter image description here

La barra rossa è un'altra vista al di fuori del controllo ListView (nel mio caso un SeekBar verticale).

Ho provato a chiamare View.bringToFront() su un determinato articolo ma non ha funzionato affatto.

Qualche idea?

+0

Proprio come ogni valore è possibile modificare lo z-index' 'in modo che l'oggetto si sposta in avanti o indietro nella sua posizione di pagina come l'utente interagisce con la pagina. – Andrew

+0

@Andrew cambiando l'indice Z della vista cambierà solo la posizione ** rispetto alle sue viste di pari livello **. In un 'ListView' tutti gli elementi nell'elenco sono fratelli, ma la modifica dell'indice Z non avrà alcun effetto poiché gli elementi dell'elenco non si sovrappongono. Cambiando l'indice Z di un elemento nell'elenco ** non ** si fa saltare in avanti per essere di fronte a un'altra vista che ** non è un fratello delle viste in 'ListView' **. –

risposta

1

Ecco come vorrei andare circa realizzare l'effetto desiderato:

Ogni elemento della lista dovrebbe avere una barra rossa in esso che è l'altezza della voce. In questo modo tutte le barre rosse si allineano facendo sembrare che ci sia solo una barra rossa quando in realtà ce ne è una per articolo.

Se si utilizza un FrameLayout, l'ordine dei figli determina l'ordine di disegno, ad esempio, appare il terzo figlio di un FrameLayout sulla parte superiore del 1 ° e 2 ° bambino.

Quindi in fase di esecuzione è possibile disporre la barra rossa sopra o sotto il contenuto di ciascun elemento. Nel metodo bindView dell'adattatore è possibile utilizzare il metodo bringToFront per portare la barra rossa in primo piano per quella vista. Non dimenticare che le viste vengono riciclate nello ListView, quindi dovrai spostare la barra rossa per correggere ogni volta la posizione z.

Ecco un file XML di esempio molto ridotto per un elemento nella vista, fammi sapere se hai bisogno di ulteriori informazioni.

item_red_bar_bottom.xml:

<FrameLayout ...> 
    <ImageView .../> <!-- Red bar on bottom --> 
    <FrameLayout ...> 
     <!-- Normal item contents go here --> 
    </FrameLayout> 
</FrameLayout> 
Problemi correlati