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?

Respuestas:


188

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

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

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);

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 .


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);

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);

-6

Simplemente use como sigue: -

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

2 significa Vertical, 1 se usa para horizontal.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.