2010-10-14 16 views
27

Ho visto numerose applicazioni che utilizzano la stratificazione nei loro layout. Quando parlo di stratificazione mi riferisco ai livelli nell'asse z rispetto alla vista dell'utente. Una di queste app è l'app Craigslist Notification in cui, in cima alla lista, c'è un segno più in basso per consentire all'utente l'accesso all'aggiunta di una voce di elenco aggiuntiva.Layout layer? Z-Axis?

Nel mio caso, sto utilizzando con successo GestureListener per trasformare le pagine. Funziona bene, ma mi piacerebbe sovrapporre un png trasparente a destra e a sinistra sui bordi delle pagine se ci sono pagine indietro o avanti di quella in cui l'utente è attualmente attivo.

Ho cercato, ma non sono abbastanza sicuro come avere 2 elementi di un Layout che consumano lo stesso spazio contemporaneamente. In questo caso hai il contenuto della pagina (layout) e la necessità di qualcosa sopra (asse z) di quel layout.

Qualcuno può indicarmi la giusta direzione?

risposta

81

Provare a utilizzare FrameLayout.

FrameLayout posiziona sempre gli oggetti uno sopra l'altro e sempre in riferimento all'angolo in alto a sinistra, quindi è necessario utilizzare layout separati all'interno di FrameLayout per posizionare gli oggetti dove si desidera sullo schermo.

Ricorda che Android inserirà le cose nel tuo layout nell'ordine in cui sono elencate, quindi posiziona gli oggetti nella parte inferiore del layout che desideri vicino alla parte superiore del display.

Ecco un rapido esempio (non dimenticare di aggiungere dati corretti di intestazione XML al nodo superiore):

<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

piccola aggiunta alla risposta precedente: per prevenire eventi onClick su "layer" di fondo impostare l'attributo cliccabile = "true" in alto "layer"

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

in caso contrario, i pulsanti su qualcosa con gli eventi "click" può essere premuto attraverso strato superiore.

Ho trovato questo problema quando ho cercato di coprire l'interfaccia utente dal livello RelativeLayout con sfondo semitrasparente.