web-dev-qa-db-fra.com

Chevauchement de vues dans Android

Est-il possible d'avoir des vues qui se chevauchent dans Android? Je voudrais avoir un ImageView avec un png transparent à l'avant et une autre vue à l'arrière-plan.

modifier:

C’est ce que j’ai pour l’instant, le problème est que l’image dans le imageView n’est pas transparente, les parties devant être transparentes ne sont que du noir.

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" 
    Android:orientation="vertical"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:id="@+id/gallerylayout"
>
<Gallery Android:id="@+id/overview"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    />

 <ImageView Android:id="@+id/navigmaske"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:src="@drawable/navigmask"
    /> 

</RelativeLayout>

modifier:

Je l'ai fait fonctionner, c'était un fichier de thème d'un autre programmeur de l'équipe. Vient de changer cela

<item name="Android:background">#FF000000</item>

pour ça

<item name="Android:background">#00000000</item>
72
Alexander Stolz

Android gère la transparence entre les vues et les éléments dessinables (y compris les images PNG) de manière native, de sorte que le scénario que vous décrivez (un ImageView partiellement transparent devant un Gallery) est certainement possible.

Si vous rencontrez des problèmes, cela peut être lié à la mise en page ou à votre image. J'ai reproduit la mise en page que vous décrivez et réussi à obtenir l'effet recherché. Voici la mise en page exacte que j'ai utilisée.

<RelativeLayout 
  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:id="@+id/gallerylayout"
  Android:layout_width="fill_parent"
  Android:layout_height="fill_parent">
  <Gallery
    Android:id="@+id/overview"
    Android:layout_width="fill_parent" 
    Android:layout_height="wrap_content"
  />
  <ImageView
    Android:id="@+id/navigmaske"
    Android:background="#0000"      
    Android:src="@drawable/navigmask"
    Android:scaleType="fitXY"
    Android:layout_alignTop="@id/overview"
    Android:layout_alignBottom="@id/overview"
    Android:layout_width="fill_parent" 
    Android:layout_height="wrap_content"
  />
</RelativeLayout>

Notez que j'ai changé le parent RelativeLayout en une hauteur et une largeur de fill_parent comme c'est généralement ce que vous voulez pour une activité principale. Ensuite, j'ai aligné le haut et le bas du ImageView sur le haut et le bas du Gallery pour qu'il soit centré en face de celui-ci.

J'ai aussi explicitement défini l'arrière-plan de ImageView pour qu'il soit transparent.

Pour ce qui est de l’image dessinable elle-même, si vous mettez le fichier PNG à un endroit que je peux regarder, je peux l’utiliser dans mon projet et voir s’il est responsable.

68
Reto Meier

Regardez aussi FrameLayout, c'est ainsi que l'application Galerie de l'appareil photo implémente la superposition des boutons de zoom.

9
reflog

Si vous souhaitez ajouter votre écran de superposition personnalisé à la disposition, vous pouvez créer une disposition linéaire personnalisée et prendre le contrôle du dessin et des événements clés. Vous pouvez utiliser mon tutoriel- Superposition sur Android Layout- http://prasanta-paul.blogspot.com/2010/08/overlay-on-Android-layout.html =

7
Prasanta

La galerie visible change la visibilité, ce qui vous permet de recouvrir une autre vue. l'application exemple Home a quelques bons exemples de cette technique.

1
Fred Grott

La solution la plus simple consiste à placer une marge de -40dp au bas de la vue supérieure.

0