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?

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

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

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 .


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

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

-6

Verwenden Sie einfach wie folgt: -

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

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.