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?

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

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

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 .


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

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

-6

Basta usar o seguinte: -

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

2 significa Vertical, 1 é usado para horizontal.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.