2010-10-14 14 views
27

Ich habe zahlreiche Anwendungen gesehen, die Layering in ihren Layouts verwenden. Wenn ich von Layering spreche, beziehe ich mich auf Schichten in der z-Achse relativ zur Ansicht des Benutzers. Eine solche App ist die App "Craigslist Notification", bei der oben auf der ListView ein Pluszeichen im unteren Bereich angezeigt wird, um dem Benutzer den Zugriff auf ein zusätzliches Listenelement zu ermöglichen.Layout Ebenen? Z-Achse?

In meinem Fall verwende ich erfolgreich einen GestureListener, um Seiten umzublättern. Funktioniert gut, aber ich würde gerne einen transparenten rechten und linken Pfeil png an den Rändern der Seiten einblenden, wenn sich Seiten vor oder hinter denen befinden, auf denen sich der Benutzer gerade befindet.

Ich habe gesucht, aber nicht ganz sicher, wie 2 Elemente eines Layouts den gleichen Speicherplatz gleichzeitig verbrauchen. In diesem Fall haben Sie den Inhalt der Seite (Layout) und die Notwendigkeit für etwas über (Z-Achse) dieses Layouts.

Kann mir jemand in die richtige Richtung zeigen?

Antwort

81

Versuchen Sie es mit FrameLayout.

FrameLayout platziert die Objekte immer übereinander und immer in Bezug auf die obere linke Ecke. Daher müssen Sie innerhalb von FrameLayout separate Layouts verwenden, um Ihre Objekte an der gewünschten Stelle auf dem Bildschirm zu platzieren.

Denken Sie daran, dass Android Dinge in Ihrem Layout in der Reihenfolge, dass sie Liste sind, legen Sie Objekte am unteren Rand des Layouts, die Sie wollen, in der Nähe der Spitze Ihrer Anzeige.

Hier ist ein kurzes Beispiel (vergessen Sie nicht die richtigen XML-Header-Daten an den obersten Knoten hinzugefügt werden):

<FrameLayout> 
    <RelativeLayout> 
    <!-- Place the objects you want on the bottom here --> 
    </RelativeLayout> 


    <RelativeLayout> 
    <!-- Place the objects you want on the top here --> 
    </RelativeLayout> 
</FrameLayout> 
13

Kleine zusätzlich zur vorherige Antwort: onClick Ereignisse auf der Unterseite „Schicht“ gesetzt Attribut zu verhindern klickbare = „true“ nach oben „Schicht“

<RelativeLayout 
.... 
android:clickable="true"/> 

Andernfalls Tasten auf etwas mit „Klick“ Ereignisse können durch die obere Schicht gedrückt werden.

Ich habe dieses Problem gefunden, wenn ich versucht habe, UI durch RelativeLayout Ebene mit halbtransparenten Hintergrund zu decken.