2010-10-14 4 views
27

J'ai vu de nombreuses applications qui utilisent la superposition dans leurs mises en page. Quand je parle de superposition, je fais référence aux calques dans l'axe z par rapport à la vue de l'utilisateur. Une telle application est l'application de notification Craigslist où sur le dessus de la liste, il y a un signe plus près du bas pour permettre à l'utilisateur d'accéder à l'ajout d'un élément de liste supplémentaire.Layout Layers? Axe z?

Dans mon cas, j'utilise avec succès un GestureListener pour tourner des pages. Fonctionne bien, mais je voudrais superposer une flèche droite et une flèche gauche png sur les bords des pages s'il y a des pages en arrière ou en avant de celle sur laquelle l'utilisateur est actuellement.

J'ai cherché, mais je ne suis pas sûr de savoir comment avoir 2 éléments d'une mise en page consomment le même espace simultanément. Dans ce cas, vous avez le contenu de la page (disposition), et le besoin de quelque chose au-dessus de (axe z) de cette mise en page.

Quelqu'un peut-il me diriger dans la bonne direction?

Répondre

81

Essayez d'utiliser FrameLayout. FrameLayout place toujours les objets les uns sur les autres et toujours en référence au coin supérieur gauche. Vous devez donc utiliser des dispositions distinctes à l'intérieur de FrameLayout pour placer vos objets là où vous le souhaitez à l'écran. Rappelez-vous que Android mettra les choses dans votre mise en page dans l'ordre de leur liste, placez donc les objets en bas de la mise en page que vous voulez en haut de votre écran.

Voici un exemple rapide (ne pas oublier d'ajouter appropriés les données d'en-tête xml au nœud supérieur):

<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

Petit plus de réponse précédente: pour prévenir les événements onClick sur « couche » fond ensemble d'attributs cliquable = « true » en haut « couche »

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

Sinon, les boutons sur quelque chose avec les événements « cliquez sur » peut être pressé à travers la couche supérieure.

J'ai trouvé ce problème lorsque j'ai essayé de couvrir l'interface utilisateur par un calque RelativeLayout avec un arrière-plan semi-transparent.