2010-02-15 6 views
21

J'ai été déconner avec cela pendant quelques jours maintenant, j'espère que quelqu'un ici peut me donner un coup de main.Android vue flottante (sur d'autres vues)

J'ai une disposition de deux colonnes simple, le côté gauche est une barre de navigation avec des boutons, le côté droit est un panneau de contenu. Lorsque l'utilisateur appuie sur l'un des boutons (par exemple, le troisième), j'aimerais avoir une vue flottante alignée à la droite de ce bouton mais flottant au-dessus du volet de contenu. Voici une image pour illustrer ce que je veux dire: Layout

Tout ce que j'ai essayé pousse le menu flottant dans la barre de navigation ou dans le panneau de contenu, ce qui n'est pas ce que je veux. Des idées? Voici à peu près ce que j'ai jusqu'à présent:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:layout_alignParentLeft="true" 
     android:id="@+id/navigation_bar" 
    > 
     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.14" 
     > 
      <ImageButton 
       android:id="@+id/button1_btn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@drawable/icon" 
       android:layout_gravity="center" 
      /> 
     </FrameLayout> 
     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.14" 
     > 
      <ImageButton 
       android:id="@+id/button2_btn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@drawable/icon" 
       android:layout_gravity="center" 
      /> 
     </FrameLayout> 
    </LinearLayout> 
    <FrameLayout 
     android:id="@+id/content" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.14" 
     android:layout_toRightOf="@id/navigation_bar" 
    > 
    </FrameLayout> 
</RelativeLayout> 
+9

Avant le dessin: P – LuckyMe

+0

Dave, avez-vous réussi à l'implémenter? J'ai besoin de faire quelque chose de très simmilar donc je serais heureux si vous partagez quelques éléments de votre implémentation. –

Répondre

14

Un FrameLayout vous permet d'avoir une vue chevauchant une autre vue. Je ne suis pas sûr qu'il soit logique de les avoir avec une seule vue enfant, comme vous l'avez dans votre exemple. Essayez d'avoir un FrameLayout au plus haut niveau, avec votre vue "statique" comme premier élément enfant et le menu flottant comme second enfant.

Les developer documents ont une bonne vue d'ensemble sur les types de disposition, cela peut vous aider à démarrer.

+2

'RelativeLayout' prend également en charge les vues qui se chevauchent. – CommonsWare

+22

'RelativeLayout' hérite de' FrameLayout'. – Ridcully

+0

Lien cassé en avril 2017, utilisez [this] (https://developer.android.com/guide/topics/ui/declaring-layout.html) au lieu de – Mendhak

-11

RelativeLayout est ce que vous voulez.
FrameLayout ne doit avoir qu'un seul enfant et, par conséquent, n'est généralement utilisé que pour un espace réservé dans lequel d'autres dispositions sont disponibles ultérieurement (par exemple, le cadre principal de l'activité).
AbsoluteLayout est déprécié et ne doit pas être utilisé.

RelativeLayout permet aux vues de se chevaucher et permet de faire à peu près tout ce que vous voulez.

+14

FrameLayout peut absolument avoir plusieurs enfants. – ATom

Questions connexes