Orientation de la mise en page dans le code


89

J'ai ce code dans mon application:

LinearLayout.LayoutParams params =
    new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);

et je veux juste définir l'orientation de LinearLayout sur vertical. L'équivalent en XML est:

android:orientation="vertical"

Comment puis-je le faire dans le code, sans XML?

Réponses:


187

Vous ne pouvez pas changer LinearLayoutl'orientation de son utilisation LayoutParams. Cela ne peut être fait qu'avec un LinearLayoutobjet.

LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);

8

Vous pouvez utiliser comme celui-ci:

LinearLayout myll = (LinearLayout) findViewById(R.id.yourLinearLayout);
myll.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
myll.setOrientation(LinearLayout.VERTICAL);

4
la deuxième ligne devrait êtremyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
abhyudayasrinet

4

Vous devez créer une instance de LinearLayout. Après cela, vous pouvez appeler setOrientation ()

LinearLayout myLayout = ...;
myLayout.setLayoutParams(new LayoutParams(LinearLayout.WRAP_CONTENT, LinearLayout.WRAP_CONTENT);
myLayout.setOrientation(LinearLayout.VERTICAL);

Cela devrait faire le travail :)

Pour plus d'informations, consultez l' API Android .


2

Un exemple de travail ci-dessous (c'est LayoutParams.WRAP_CONTENT, PAS LinearLayout.WRAP_CONTENT)

myLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
myLayout.setLayoutParams(layoutParams);

2

Au cas où quelqu'un d'autre arriverait ici comme moi à la recherche de la réponse pour Xamarin, l'équivalent est:

LinearLayout layout = /* ... */;
layout.Orientation = Orientation.Vertical;
layout.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent);

-6

Utilisez simplement comme suit: -

LinearLayout mlayout = new LinearLayout(context);
mlayout.setOrientation(2);

2 signifie que Vertical1 est utilisé horizontal.


1
Pourquoi reviendriez-vous 4 ans après l'acceptation de la réponse et donneriez-vous une pire réponse? Vous ne devez pas utiliser «2». Vous devez utiliser les valeurs statiques définies dans LinearLayout, par exemple LinearLayout.Vertical.
Stealth Rabbi

Parce que je voulais savoir si j'ai raison ou tort. :) Maintenant, j'ai appris qu'il est préférable d'utiliser des valeurs statiques définies dans linearLayout. :-)
Yama Raahi

Alors pourquoi ne pas simplement regarder la bonne réponse? Le débordement de pile ne doit pas être utilisé pour faire de vos suppositions des RÉPONSES. Si vous ne savez pas comment répondre correctement à la question, n'écrivez pas de réponse. Maintenant, quand quelqu'un vient sur cette page, il doit savoir ignorer votre mauvaise réponse et en chercher de meilleures. C'est pourquoi vous êtes déconseillé.
Stealth Rabbi

Je voulais juste contribuer mon ami, dans mon cas celui-ci a fonctionné et j'ai commenté pour lui. BTW, s'il est faux d'utiliser 2 et 1, alors pourquoi diable existe-t-il.?
Yama Raahi

Il existe parce que c'est la valeur brute attachée aux constantes statiques définies dans LinearLayout comme l'a souligné @StealthRabbi. Cependant, vous ne devriez jamais utiliser ces valeurs.
Daniel Molina
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.