Pourquoi ma disposition relative occupent la pleine largeur de l'écran
Pourquoi ma disposition relative occupent la pleine largeur de l'écran
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#f00"
>
<Button
android:id="@+id/Button01"
android:text="Press Here"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
<Button
android:id="@+id/Button02"
android:text="02"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
</RelativeLayout>
J'ai spécifié la disposition relative à "wrap_content", alors pourquoi est-il occuper à plein d'espace à l'écran. Mettre est même, même si je dis android:layout_width="fill_parent".
M'éclairer s'il vous plaît!
EDIT : je pense que je n'ai pas été très claire à ma question plus tôt. Toutes mes excuses pour cela.
Quand j'ai 2 enfant de vues en un rapport de mise en page et l'un d'eux est aligné à gauche pour le parent et l'autre est aligné à droite et relative mises en largeur est WRAP_CONTENT puis j'ai attendu que les dispositions de la largeur à la somme de la largeur de 2 boutons (n'est-ce pas ce que WRAP_CONTENT signifie??). Je sais qu'il y a d'autres moyens d'atteindre l'INTERFACE utilisateur je cherche, mais Im juste essayer de comprendre ces par rapport balises de présentation correctement.
EDIT 2: j'ai expérimenté un peu et il semble que si nous avons à l'aide de Layout_AlighParentRight avec son parent de même largeur que WRAP_CONTENT ensuite la partie supérieure largeur de présentation est utilisée pour le calcul (comme quelques réponses ci-dessous). Mais nous sommes en utilisant simplement la Layout_alignParentLeft alors qu'il fonctionne comme prévu et la largeur de la présentation est de ne pas étendre à la totalité de l'écran. Merci pour l'aide les gars!
OriginalL'auteur Santosh | 2011-10-08
Vous devez vous connecter pour publier un commentaire.
Les autres réponses ont souligné à juste titre que lorsque votre disposition relative de la largeur est définie à
wrap_content
, et que ses enfants sont alignés à droite et à gauche, la mise en page prend la largeur de son parent - dans ce cas, la totalité de l'écran. Si, toutefois, les deux enfants ont été alignés d'un côté, la mise en page serait aussi large que la plus large de l'enfant.Maintenant, si vous voulez les deux boutons qui doivent être placés les uns à côté des autres, et par rapport à la mise en page pour être aussi large que la somme des largeurs des boutons, une approche légèrement différente est nécessaire. Plutôt que de présenter les deux boutons par rapport à la mère, le faire avec un seul bouton (e.g, le premier). Disons que son positionnement est inchangée (
android:layout_alignParentRight="true"
). Maintenant, le bouton se trouve à droite, donc le deuxième bouton, afin d'être en position à côté de celui-ci, doit être alignée sur le premier bouton du côté gauche. Ainsi, nous pouvons ajouterandroid:layout_toLeftOf="@id/Button01"
(et supprimer leandroid:layout_alignParentLeft="true"
partie).Pour en savoir plus, je vous suggère de consulter un très sympathique tutoriel sur la relative mises en page.
Merci :). Pensez-y de cette façon:
wrap_content
signifie être aussi large que l'espace pris par les enfants. Maintenant, si vous prenez un enfant et direalignParentRight
, il est censé aller à la droite de son père. Mais quelle est la largeur de la mère? Eh bien, aussi large que l'espace pris par les enfants. En d'autres termes, le parent quitte la décision de sa largeur pour ses enfants. Et les enfants ne sont pas contraints par leurs parents, ils vont jusqu'à la fin - ce qui est le parent du conteneur.Bonne explication. Merci!
Salut est ce que quelqu'un a une idée de cette approche dans xamarin forms xaml ?
OriginalL'auteur ernes7a
la cause que vous avez un
largeur d'un objet , et un
largeur d'un autre objet , puis la mise en page s'étend à la fois côté , vous donnant la pleine largeur de tracé.
Mais lorsque vous utilisez Layout_alignParentXXXXX , et vous mettre en parent WRAP_CONTENT , qui rend les enfants à aller à la tige de mise en page avec une largeur définie.
mon expérience me dit que , mais vous pouvez l'essayer , mettre un autre supérieur LinearLayout avec une largeur par exemple de 50dip et voir le résultat 🙂
J'ai expérimenté un peu et il semble que si nous avons à l'aide de Layout_AlighParentRight avec son parent de même largeur que WRAP_CONTENT ensuite la partie supérieure largeur de présentation est utilisée pour le calcul (comme vous l'avez souligné). Mais nous sommes en utilisant simplement la Layout_alignParentLeft alors qu'il fonctionne comme prévu et la largeur de la présentation est de ne pas étendre à la totalité de l'écran. Merci pour l'aide Quiroga!
OriginalL'auteur A.Quiroga
Cette ligne fait de la "Presse" (
Button01
) aligner à droite:Qui rend votre disposition remplir le parent en largeur.
OriginalL'auteur Michell Bak
Une autre question que vous pouvez faire face est que si vous définissez vos 2 enfants à "aligner parent droite"+"wrap_content", et à votre disposition relative à "wrap_content", et cette disposition est contenue dans un plein écran LinearLayout votre disposition relative occupera toute la LinearLayout largeur.
Si vous le faites avec les deux "align parent gauche", la disposition relative des bâtons sur la gauche, et sa largeur est vraiment un "wrap". Mais le comportement est différent pour "align parent droite", c'est un peu étrange.
Solution de contournement:
De résoudre ce problème (j'ai dû aligner l'un des enfants de la droite), j'ai effectivement mis les 2 enfants à "aligner parent gauche" et joué avec les enfants de rembourrage afin d'obtenir l'un des enfants positionne sur le coin supérieur droit. C'est un sale solution de contournement, mais le seul que j'ai trouvé pour l'instant.
Possible solutions plus propres:
Une autre astuce serait de mettre 2 LinearLayout à l'intérieur d'un FrameLayout, puis mettez vos vrais enfants dans chaque LinearLayout, et de jouer avec la gravité de ces LinearLayout à la position des enfants dans la bonne position.
OriginalL'auteur Benjamin Piette