Layoutorientierung im Code

89

Ich habe diesen Code in meiner Anwendung:

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

und ich möchte nur die Ausrichtung des LinearLayout auf vertikal setzen. Das Äquivalent in XML ist:

android:orientation="vertical"

Wie kann ich das im Code ohne XML machen?

Greg
quelle

Antworten:

186

Sie können die LinearLayoutAusrichtung nicht mit seiner ändern LayoutParams. Dies kann nur mit einem LinearLayoutObjekt durchgeführt werden.

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

Sie können wie folgt verwenden:

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
quelle
4
Die zweite Zeile sollte seinmyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
abhyudayasrinet
4

Sie müssen LinearLayout instanziieren. Danach können Sie setOrientation () aufrufen

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

Das sollte den Job machen :)

Weitere Informationen finden Sie in der Android-API .

dudeldidadum
quelle
2

Ein Arbeitsbeispiel unten (LayoutParams.WRAP_CONTENT, NICHT LinearLayout.WRAP_CONTENT)

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

Falls jemand wie ich hier ankommt und nach der Antwort für Xamarin sucht, lautet das Äquivalent:

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

Verwenden Sie einfach wie folgt: -

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

2 bedeutet Vertical, 1 wird verwendet für horizontal.

Yama Raahi
quelle
1
Warum sollten Sie 4 Jahre nach Annahme der Antwort zurückkommen und eine schlechtere Antwort geben? Sie sollten nicht '2' verwenden. Sie sollten die in LinearLayout definierten statischen Werte verwenden, z. B. LinearLayout.Vertical.
Stealth Rabbi
Weil ich wissen wollte, ob ich richtig oder falsch liege. :) Jetzt habe ich gelernt, dass es besser ist, statische Werte zu verwenden, die in linearLayout definiert sind. :-)
Yama Raahi
Warum dann nicht einfach die richtige Antwort anschauen? Der Stapelüberlauf sollte nicht verwendet werden, um Ihre Vermutungen als ANTWORTEN zu formulieren. Wenn Sie nicht wissen, wie Sie die Frage richtig beantworten sollen, schreiben Sie keine Antwort. Wenn jemand auf diese Seite kommt, muss er wissen, dass er Ihre falsche Antwort ignoriert und nach besseren sucht. Aus diesem Grund werden Sie herabgestuft.
Stealth Rabbi
Ich wollte nur meinen Freund beisteuern, in meinem Fall hat dieser funktioniert und ich habe für ihn kommentiert. Übrigens, wenn es falsch ist, 2 und 1 zu verwenden, warum zum Teufel existiert es dann?
Yama Raahi
Es existiert, weil es der Rohwert ist, der an die statischen Konstanten angehängt ist, die in LinearLayout als @StealthRabbi definiert wurden. Sie sollten diese Werte jedoch niemals verwenden.
Daniel Molina