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>
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
@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. –