Android RelativeLayout alignCenter à partir d'un autre point de Vue
J'ai un RelativeLayout
avec deux enfants qui sont également les deux RelativeLayout
s contenant quelques boutons et des choses. Ces enfants, ces dispositions ne sont pas centré dans ma page principale, et la page principale contient quelques autres choses les côtés de ces deux. Je veux le premier à être sur le dessus de la seconde. C'est assez simple, il suffit d'utiliser android:layout_below="@+id/firstLayout"
dans le second. Mais je veux aussi que le deuxième à être aligné sur le centre de la première. Par cela je veux dire que je veux la deuxième disposition pour trouver le centre de la première, et l'aligner de sorte que son centre est dans la même position x. Je vois alignLeft, alignRight, alignTop, and alignBaseline
, mais pas de centre. Est-ce possible de le faire sans avoir à coder en dur une marge scoot la deuxième disposition pour certains?
Voici un exemple grossier de ce que je suis en train de finir avec, la barre bleue serait la première mise en page, et la zone rouge serait la deuxième mise en page. Je sais que je pourrais les envelopper à la fois dans un autre RelativeLayout
qui a tailles égal à "wrap_content"
et ensuite utiliser centerHorizontal="true"
pour le deuxième. Mais j'aurais vraiment préféré laisser les deux enfants de ma page principale (j'ai fais quelques changements à la façon dont certaines parties de mon application fonctionne si je fais des enfants d'une disposition distincte. Que j'essaie d'éviter.)
Vous devez vous connecter pour publier un commentaire.
Si vous pouvez définir la largeur du parent en page "wrap_content", vous pouvez alors mettre les deux enfants des schémas de centre
Parfois, vous pouvez définir
alignLeft
etalignRight
à la vue souhaitée, puis utilisez la gravité sur l'élément que vous souhaitez centré.Par exemple:
Si le composant n'est pas un
TextView
(ou d'un point de vue où vous n'avez pas besoin de l'arrière-plan), vous pouvez l'envelopper dans unFrameLayout
avec les propriétés ci-dessus.De cette façon, la vue d'en bas sera un Cadre de la même largeur que la supérieure, mais à l'intérieur, il y aura un point de vue qui est centré sur la largeur.
Bien sûr, cela ne fonctionne que si vous savez qui est le plus grand point de vue. Si pas, comme Laranjeiro répondu, enveloppement à la fois contenu dans un autre modèle centré avec la gravité.
La seule solution qui a fonctionné pour moi, c'était enroulez les deux composants dans un FrameLayout avec la dimension du plus gros de composants et de définir le deuxième composant dans le centre de la FrameLayout l'aide de la propriété
Pour les textes que j'ai été en utilisant cette f.e pour une verticale-centre d'alignement:
Suffit de le définir comme ceci: