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.