2013-04-29 18 views
9

Ist es möglich, dass Elemente in einem ListView unterschiedliche Z-Position/Index haben?Unterschiedliche Z-Position für ListView-Objekte

Ich möchte ein Element in meinem ListView immer über anderen Ansichten in meinem Layout.

Meine Abbildung hier:

enter image description here

Der rote Balken ist eine andere Ansicht außerhalb des Listview (in meinem Fall eine vertikale seekbar).

Ich habe versucht, View.bringToFront() auf einen bestimmten Artikel aufrufen, aber das hat überhaupt nicht funktioniert.

Irgendwelche Ideen?

+0

Wie jeder Wert kann man den z-'index' ändern, so dass das Objekt vorwärts oder rückwärts in ihrer Seitenposition bewegt, wenn der Benutzer mit der Seite zusammenwirkt. – Andrew

+0

@Andrew ändert den Z-Index der Ansicht ändert nur die Position ** relativ zu seinen Geschwisteransichten **. In einer "ListView" sind alle Elemente in der Liste Geschwister, aber das Ändern des Z-Index hat keine Auswirkungen, da sich die Listenelemente nicht überschneiden. Wenn Sie den Z-Index eines Elements in der Liste ändern, springt ** ** nicht ** vorwärts, um vor einer anderen Ansicht zu stehen, die ** kein Geschwister der Ansichten in der 'ListView' ** ist. –

Antwort

1

Hier ist, wie ich über das Erreichen der Wirkung gehen würden Sie sich wünschen:

Jedes Element in der Liste sollte einen roten Balken darin haben, dass die Höhe des Elements ist. Auf diese Weise sehen alle roten Balken so aus, als ob es nur einen roten Balken gäbe, obwohl es tatsächlich einen pro Punkt gibt.

Wenn Sie eine FrameLayout verwenden, bestimmt die Reihenfolge der Kinder die Zeichnungsreihenfolge, zum Beispiel das 3. Kind eines FrameLayout wird über dem ersten und zweiten Kind angezeigt.

Dann können Sie zur Laufzeit den roten Balken über oder unter dem Inhalt eines jeden Elements anordnen. In der bindView Methode Ihres Adapters können Sie die bringToFront Methode verwenden, um den roten Balken für diese Ansicht nach vorne zu bringen. Vergessen Sie nicht, dass Ansichten im ListView recycelt werden, so dass Sie den roten Balken jedes Mal verschieben müssen, um die z-Position zu korrigieren.

Hier ist eine sehr abgespeckte XML-Beispieldatei für ein Element in der Ansicht, lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

item_red_bar_bottom.xml:

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