12
votes

Première vue ci-dessus / se chevauchant seconde dans linearlayout

est-il possible de montrer la première vue dans une linearlayout qui se chevauchent la seconde?

Je voudrais mettre en place mes points de vue comme: xxx

mais j'ai besoin de mon Première vue de la mise en page, FirstTextview, à placer sur (chevauchement) SonnecTextView. Est-ce possible? J'utilise le linearlayout parce que je joue aussi avec les marges pour obtenir un effet chevauchant.


8 commentaires

Pourquoi voulez-vous qu'il placer en haut? Vous voulez dire directement à votre secondtextview ?


@codemagic je le plate sur le dessus car "je joue aussi avec les marges pour obtenir un effet qui se chevauche"


Vous voulez donc que la deuxième vue soit sous et à droite de la première vue?


@Voicu exactement! :) Sauf que j'utilise également les autres propriétés Lienarlayout, je préférerais donc ne pas utiliser un autre système de mise en page.


J'ai vu ça, mais pourquoi ne pas utiliser relativenelayout alors? Par défaut, les deux seront en haut à gauche, alors vous pouvez jouer avec margins à partir de là, si je vous comprends correctement


@Codemagic C'est parce que j'utilise certains paramètres de mise en page linéarlayout.


@Voiicu Comment est-ce une perte de temps? Avez-vous même essayé cela? Si je chevauche les deux vues, la deuxième vue sera au-dessus du premier. Essayez-le vous-même, d'abord.


@Voiicu j'ai besoin des arrière-plans pour être coloré, alors ils ne peuvent pas être transparents ..


5 Réponses :


2
votes

ou vous pouvez coller avec une mise en page linéaire, mais placez une relativation en elle, en tant qu'enfant. Vous pouvez également placer vos visites textuelles avec le relativationAnchyout, de sorte qu'ils iront des propriétés inhiberet de relativelayoutout. Vous pouvez toujours utiliser votre linearlayout pour d'autres vues. http://developer.android.com/reference/andrroid/widget/relatelayAYout.html


0 commentaires

6
votes

Si tout ce que vous voulez, c'est de chevaucher les deux vues verticalement, utilisez ce XML: xxx

 Entrez la description de l'image ici


6 commentaires

Et la première vue est toujours en dessous de la seconde!


Je n'ai pas besoin de code Java pour savoir que la deuxième vue sera superposée sur la première vue. J'utilise simplement une licence de base.


N'hésitez pas à changer d'arrière-plan à la couleur que vous voulez si la transparence n'est pas souhaitée. Les deux premiers chiffres concernent l'alpha et l'autre sont le RRGGBB.


Oui, mais pouvez-vous voir que si vous modifiez la couleur de fond, la deuxième vue est en haut de la première. Si vous avez effectué la première vue 'S "# DDAA00" et la seconde référence "SECK" # 3300DD ", le bleu recouvrira le jaune. J'ai besoin du jaune au sommet du bleu.


La confusion a commencé à partir de l'utilisation de "sur le dessus" au lieu de "devant". Dans le monde Android, "sur le dessus" fait référence au placement vertical d'une vue sur une autre. Malheureusement, l'axe z ne fonctionne pas dans linearlayout , vous utilisez donc relativenelayout ou framelayout pour cela. Une solution de contournement serait d'inverser les vues et la marge-poussez la seconde avec suffisamment DP S pour ressembler à ce qu'il est le premier tout en restant en avant.


D'accord. Et ce sera impossible pour moi, puisque l'autre vue est basée sur wrap_content . Ce genre de suce. J'ai vraiment besoin du linearlayout.layoutparams . Désolé pour la confusion.



8
votes

Qu'est-ce qui a fonctionné pour moi et va probablement travailler pour vous est que:

  1. Enveloppez votre 2 TextViews avec relativelayouout au lieu de linearlayout et définissez Android: ClipChildren = "Faux". Cela empêchera la partie chevauchante d'être coupée.
  2. Layout Le 2e TextView ci-dessous le premier TextView
  3. Dans le code, appelez CAIRTTOFRONT () sur le premier TextView. Par défaut, le premier TextView est dessiné en premier et sera inférieur au deuxième TextView. Appeling CampingtoFront () changera cet ordre.

    de sorte que la mise en page peut être quelque chose comme ceci: xxx

    et: xxx


1 commentaires

Vous n'avez pas besoin de ClipChildren. Si les deux vues sont dans la même mise en page, elles peuvent se chevaucher. Dans une présentation relative, cela se fait tout le temps. ClipChildren est pour laisser les choses être dessinées à l'extérieur de la mise en page parent parent. Le CAILTTOFRONT n'est pas non plus nécessaire, l'ordre Z est contrôlé par l'ordre dans le fichier que les vues sont définies.



0
votes

En attribuant une valeur de marge "<0", nous pouvons chevaucher les vues. Mais la mise en page relative est préférable lorsque nous avons besoin d'une vue de chevauchement.


0 commentaires

0
votes

Je sais que c'est une vieille question, mais au cas où n'importe qui la recherche de nouveau comme j'étais aujourd'hui - j'ai une mise en page de manière dynamique, donc je n'ai pas vraiment de xml spécifique plutôt une vue séparée que je veux ajouter à l'ONUTOP de ma pile en fonction de certains paramètres; Le commentaire de @gabesechan laissez-moi dans la bonne direction, j'ai utilisé la marge -Bottom pour apporter la deuxième vue, insérée la nouvelle vue à la position 0 xxx


0 commentaires