7
votes

Pourquoi ma disposition relative occupe-t-elle la largeur de plein écran

Pourquoi ma disposition relative occupe-t-elle la largeur de l'écran complet xxx

J'ai spécifié la disposition relative à "Wrap_Content", alors pourquoi occupe-t-il l'espace complet. Out Met est identique même si je dis Android: Layout_width = "Fill_Parent". éclairer

éclairer moi s'il vous plaît!

Edit: je pense que je n'était pas très clair avec ma question plus tôt. Excuses pour cela. Lorsque j'ai 2 vues sur les enfants dans une mise en page relative et que l'une d'entre elles est laissée alignée sur le parent et d'autres est une largeur de mises en page consiste à être alignée et que la largeur des mises en page est alors que je m'attendais à ce que la largeur des mises en page soit juste la somme de la largeur de 2 boutons (n'est pas C'est ce que Wrap_Content signifie ??). Je sais qu'il y a d'autres moyens d'atteindre l'interface utilisateur de la recherche de l'interface utilisateur, mais j'essaie simplement de comprendre correctement ces étiquettes de mise en page relatives correctement.

EDIT 2: J'ai expérimenté un peu et on dirait si nous utilisons layout_alighparentright avec son La largeur du parent comme enveloppe_content puis la largeur de présentation supérieure est utilisée pour calculer (comme quelques réponses indiquées ci-dessous). Mais nous utilisons juste layout_alignparentleft, alors cela fonctionne comme prévu et la largeur de la mise en page ne s'étend pas à l'écran complet. Merci pour les personnes d'aide!


0 commentaires

4 Réponses :


1
votes

Cette ligne fait la touche "Appuyez ici" ( BOUTON01 CODE>) Aligner sur la droite:

android:layout_alignParentRight="true" 


0 commentaires

4
votes

Parce que vous avez une largeur

        android:layout_alignParentRight="true" 


3 commentaires

Merci pour la réponse, mais ce n'est pas très clair pour moi. Dites-vous que si nous utilisons layout_alignparentexxxx et la largeur des parents est Wrap_Content, la largeur de la mise en page supérieure (parent) est utilisée pour calculer ?? Est-ce vrai?


Mon expérience m'a dit que, mais vous pouvez l'essayer, mettre un autre linearlayout supérieur avec une largeur par exemple de 50DIP et voir le résultat :)


J'ai expérimenté un peu et on dirait que si nous utilisons layout_alighparentright avec la largeur de son parent comme Wrap_Content, la largeur de la disposition supérieure est ensuite utilisée pour le calcul (comme vous l'avez souligné). Mais nous utilisons juste layout_alignparentleft, alors cela fonctionne comme prévu et la largeur de la mise en page ne s'étend pas à l'écran complet. Merci pour l'aide de Quiroga!



14
votes

Les autres réponses ont été correctement signalées que lorsque la largeur de votre présentation relative est définie sur wrap_content , et ses enfants sont alignés à gauche et à droite, la disposition relative prend la largeur de son parent Ce cas, l'écran entier. Si, toutefois, les deux enfants étaient alignés d'un côté, la disposition relative serait aussi large que l'enfant le plus large.

Maintenant, si vous voulez que les deux boutons soient placés à côté de l'autre, et la disposition relative doit être aussi large que la somme des largeurs des boutons, une approche légèrement différente est nécessaire. Au lieu de positionner les deux boutons par rapport au parent, faites-le avec un seul bouton (E.g, le premier). Disons que son positionnement est laissé inchangé ( android: layout_alignparentright = "vrai" ). Maintenant, le bouton est flotté à droite, donc le second bouton, afin d'être situé à côté de celui-ci, doit être aligné sur le côté gauche du premier bouton. Ainsi, nous allons simplement ajouter android: layout_toleftof = "@ id / bouton01" (et supprimez le android: layout_alignparentleft = "vrai" pièce).

Pour plus, je vous suggère de consulter un tutoriel très sympathique sur mises en page relative .


3 commentaires

Merci pour la réponse ERNESTA! Cela a fait des choses un peu claires maintenant. Mais je suis toujours frappé un peu avec pourquoi les mises en page relatives à la suite de la largeur de son parent si ses enfants sont alignés sur les bords gauche et droit. Et hey félicitations pour atteindre le siècle sur la réputation !!


Merci :). Pensez-y de cette façon: wrap_content signifie être aussi large que l'espace pris par ses enfants. MAINTENANT Si vous prenez un enfant et dites Alignparentright , Il est censé aller au tout droit de son parent. Mais quelle est la largeur du parent? Eh bien, aussi large que l'espace pris par ses enfants. En d'autres termes, le parent laisse la décision de sa largeur à ses enfants. Et les enfants ne sont pas contraints par leur parent, ils vont donc jusqu'au bout - qui est le conteneur du parent.


Bonjour, quelqu'un a une idée de cette approche dans Xamarin formes xaml?



0
votes

Un autre problème que vous pouvez affronter est que si vous définissez vos 2 enfants à "aligner le parent droit" + "wrap_content", ainsi que votre mise en page relative sur "wrap_content", et que la mise en page relative est contenue dans un écran complet linéarlayout votre disposition relative. occupera toute la largeur linéarlayout.

Si vous le faites avec les deux "Aligner parent", les bâtons de présentation relative à gauche et sa largeur est vraiment une "teneur enrôles". Mais le comportement est différent pour "aligner le droit parent", c'est un peu étrange.

Solution de contournement:

Pour résoudre ce problème (je devais aligner l'un des enfants à droite), je fixais les 2 enfants à "Aligner le parent" et joué avec des enfants rembourrés afin d'obtenir l'un des enfants positionnés sur le dessus le coin droit. C'est une solution de contournement sale mais le seul que j'ai trouvé pour l'instant.

Solutions de nettoyage possibles:

Une autre astuce serait de mettre 2 linearlayout à l'intérieur d'un framelayout, puis de mettre vos vrais enfants dans chaque linearlayout et de jouer avec la gravité de ces linearlayout pour positionner les enfants à la bonne position.

  • relativenelayout
    • linearlayout
      • Enfant 1 (Wrap_Content)
      • linearlayout (gravité: en haut à droite)
        • Child 2 (Wrap_Content)

0 commentaires