Orientación de diseño en código

90

Tengo este código en mi aplicación:

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

y solo quiero establecer la orientación del LinearLayout en vertical. El equivalente en XML es:

android:orientation="vertical"

¿Cómo puedo hacerlo en el código, sin XML?

Greg
fuente

Respuestas:

188

No puede cambiar LinearLayoutla orientación usando su LayoutParams. Solo se puede hacer con un LinearLayoutobjeto.

LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);
Miguel
fuente
8

Puedes usarlo como este:

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
fuente
4
la segunda línea debería sermyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
abhyudayasrinet
4

Necesita instanciar LinearLayout. Después de eso, puede llamar a setOrientation ()

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

Eso debería hacer el trabajo :)

Para obtener más información, consulte la API de Android .

dudeldidadum
fuente
2

Una muestra de trabajo a continuación (es LayoutParams.WRAP_CONTENT, NO LinearLayout.WRAP_CONTENT)

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

En caso de que alguien más llegue aquí como yo buscando la respuesta para Xamarin, el equivalente es:

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

Simplemente use como sigue: -

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

2 significa Vertical, 1 se usa para horizontal.

Yama Raahi
fuente
1
¿Por qué volverías 4 años después de que se aceptara la respuesta y darías una peor respuesta? No debe utilizar '2'. Debe utilizar los valores estáticos definidos en LinearLayout, por ejemplo, LinearLayout.Vertical.
Stealth Rabbi
Porque quería saber si tengo razón o no. :) Ahora aprendí que es mejor usar valores estáticos definidos en linearLayout. :-)
Yama Raahi
Entonces, ¿por qué no mirar la respuesta correcta? Stack Overflow no debe usarse para poner sus suposiciones como RESPUESTAS. Si no sabe cómo responder la pregunta correctamente, no escriba una respuesta. Ahora, cuando alguien llega a esta página, tiene que saber ignorar su respuesta incorrecta y buscar una mejor. Ésta es la razón por la que estás siendo rechazado.
Stealth Rabbi
Solo quería aportar mi amigo, en mi caso este funcionó y comenté por él. Por cierto, si está mal usar 2 y 1, entonces ¿por qué diablos existe?
Yama Raahi
Existe porque es el valor bruto adjunto a las constantes estáticas definidas en LinearLayout como señaló @StealthRabbi. Sin embargo, nunca debería utilizar esos valores.
Daniel Molina