Orientamento del layout nel codice


90

Ho questo codice nella mia applicazione:

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

e voglio solo impostare l'orientamento del LinearLayout su verticale. L'equivalente in XML è:

android:orientation="vertical"

Come posso farlo nel codice, senza XML?

Risposte:


188

Non puoi cambiare LinearLayoutl'orientamento di usando il suo LayoutParams. Può essere fatto solo con un LinearLayoutoggetto.

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

9

Puoi usare come questo:

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 seconda riga dovrebbe esseremyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
otaku

4

Devi istanziare LinearLayout. Dopodiché puoi chiamare setOrientation ()

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

Questo dovrebbe fare il lavoro :)

Per maggiori informazioni controlla l' API Android .


2

Un esempio funzionante di seguito (è LayoutParams.WRAP_CONTENT, NON LinearLayout.WRAP_CONTENT)

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

2

Nel caso in cui qualcun altro arrivi qui come me cercando la risposta per Xamarin, l'equivalente è:

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

-6

Usa semplicemente come segue: -

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

2 significa Vertical, 1 è usato per horizontal.


1
Perché dovresti tornare 4 anni dopo che la risposta è stata accettata e dare una risposta peggiore? Non dovresti usare "2". È necessario utilizzare i valori statici definiti in LinearLayout, ad esempio LinearLayout.Vertical.
Stealth Rabbi

Perché volevo sapere se ho ragione o torto. :) Ora ho imparato che è meglio usare valori statici definiti in linearLayout. :-)
Yama Raahi

Allora perché non guardare la risposta corretta? Stack Overflow non deve essere utilizzato per mettere le tue ipotesi come RISPOSTE. Se non sai come rispondere correttamente alla domanda, non scrivere una risposta. Ora, quando qualcuno arriva su questa pagina, deve sapere di ignorare la tua risposta sbagliata e cercarne di migliori. Questo è il motivo per cui sei stato svalutato.
Stealth Rabbi

Volevo solo contribuire con il mio amico, nel mio caso questo ha funzionato e ho commentato per lui. A proposito, se è sbagliato usare 2 e 1, allora perché diavolo esiste.?
Yama Raahi

Esiste perché è il valore grezzo allegato alle costanti statiche definite in LinearLayout come ha sottolineato @StealthRabbi. Tuttavia, non dovresti mai usare quei valori.
Daniel Molina
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.