Orientação do layout no código

89

Tenho este código em meu aplicativo:

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

e eu só quero definir a orientação do LinearLayout para vertical. O equivalente em XML é:

android:orientation="vertical"

Como posso fazer no código, sem XML?

Greg
fonte

Respostas:

187

Você não pode mudar LinearLayouta orientação de usando seu LayoutParams. Isso pode ser feito apenas com um LinearLayoutobjeto.

LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);
Michael
fonte
8

Você pode usar 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
fonte
4
a segunda linha deve sermyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
abhyudayasrinet
4

Você precisa criar uma instância do LinearLayout. Depois disso, você pode chamar setOrientation ()

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

Isso deve fazer o trabalho :)

Para mais informações, verifique a API Android .

Dudeldidadum
fonte
2

Um exemplo de trabalho abaixo (é LayoutParams.WRAP_CONTENT, NÃO LinearLayout.WRAP_CONTENT)

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

Caso alguém chegue aqui como eu procurando a resposta para Xamarin, o equivalente é:

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

Basta usar o seguinte: -

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

2 significa Vertical, 1 é usado para horizontal.

Yama Raahi
fonte
1
Por que você voltaria 4 anos após a resposta ser aceita e daria uma resposta pior? Você não deve usar '2'. Você deve usar os valores estáticos definidos em LinearLayout, por exemplo, LinearLayout.Vertical.
Stealth Rabino
Porque eu queria saber se estou certo ou errado. :) Agora aprendi que é melhor usar valores estáticos definidos em linearLayout. :-)
Yama Raahi
Então, por que não olhar apenas para a resposta correta? Stack Overflow não deve ser usado para colocar suas suposições como RESPOSTAS. Se você não souber responder à pergunta corretamente, não escreva uma resposta. Agora, quando alguém chega a esta página, ele tem que saber ignorar sua resposta errada e procurar por outras melhores. É por isso que você está sendo rejeitado.
Stealth Rabino
Só queria contribuir com o meu amigo, no meu caso este funcionou e comentei por ele. BTW, se é errado usar 2 e 1, então por que diabos ele existe?
Yama Raahi
Ele existe porque é o valor bruto anexado às constantes estáticas definidas em LinearLayout conforme @StealthRabbi apontado. No entanto, você nunca deve usar esses valores.
Daniel Molina