12
votes

Android: se chevauchant deux vues (intentionnellement!)

Vous vous demandez simplement qu'il est possible de chevaucher deux éléments?

C'est une illustration de ce que je tente de réaliser:

Entrez la description de l'image ici

Fondamentalement, c'est un cercle imageButton, quel centre se trouve au coin d'un rectangle. Comment devrais-je aller le positionné? Puis-je utiliser relativenelayout ou autre chose?


4 commentaires

J'enverrais les deux points de vue dans une relativenelle et alignerais la chevauchée à droite et en bas de parent.


Si vous fournissez un lien à votre image, quelqu'un le modifiera dans la question pour vous.


chesnucase.heliohost.org/derpbox/overlayout.png


Le rectangle est en fait une forme contenant des champs (TextViews).


3 Réponses :


22
votes

Vous pouvez utiliser une relativation pour la case bleue, alignez votre image d'image dans le coin supérieur droit, puis utilisez des marges négatives pour la pousser sur la boîte de sélection. Voici un exemple illustrant l'idée générale: xxx

éditer: J'ai joué avec cela un peu plus, et vous devez définir Android: ClipChildren = "False" sur le parent du relativation. Voici un échantillon plus complet: xxx


6 commentaires

Eh bien, cela a fonctionné en termes de positionnement, mais quelque chose d'inattendu est arrivé. chesnucase.heliohost.org/derpbox/overlayout2.png comme vous pouvez le constater, le rouge Le bouton a été coupé, bien que c'est à peu près à la bonne position.


Essayez Réglage Android: Cliptopadding = "Faux" sur le relativation.


Ok, cette fois, il se révéla plus d'eux-mêmes, mais 3 quarts de celui-ci toujours caché. Qu'est-ce que ça fait quand même? De plus, si cela aide, cette boîte est une présentation relative par elle-même, l'ensemble XML est également une disposition relative. chesnucase.heliohost.org/derpbox/overlayout3.png


Ah, vous devez définir Android: ClipChildren = "False" sur le parent de la relativation, de sorte qu'il soit autorisé à dessiner à l'extérieur de sa boîte de sélection. J'ai édité ma réponse ci-dessus pour inclure cela. Vous devrez quitter l'Android: Cliptopadding = "False" aussi, car vous avez un rembourrage sur votre relativation.


Et pour expliquer ce que ces choses font, Android: Cliptopadding définit si les enfants du groupe de vue sont coupés dans la boîte de rembourrage plutôt qu'à la boîte de sélection. Cela par défaut à vrai pour la plupart des groupes de spectacles dont je suis au courant. Android: ClipChildren Définit si les enfants de groupe de vue peuvent dessiner à l'extérieur de leurs caissons de délimitation. Vous pouvez lire plus ici: développeur.android.com/reference/ Android / View / ... et ici: développeur. android.com/reference/android/view/view/view/view/view/view/view


Heureux d'avoir pu aider! Et pas de soucis, acceptant comme la réponse est juste bien :)



3
votes

Une solution très simple prend la marge d'image d'image dans des valeurs négatives (par exemple. -40dp). Mais cela ne fonctionne que dans certaines situations.


0 commentaires

0
votes

Une autre approche simple serait d'utiliser deux vues d'image transparentes. Ces visites d'images seront au haut et à droite de la disposition bleue. Définir le fond de cette image Vues comme # 00000000 pour les rendre transparents.


0 commentaires