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?

Greg
la source

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);
Michael
la source
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);
Balaji Khadake
la source
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 .

dudeldidadum
la source
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);
Tia
la source
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);
stovroz
la source
-6

Utilisez simplement comme suit: -

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

2 signifie que Vertical1 est utilisé horizontal.

Yama Raahi
la source
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