Orientacja układu w kodzie

90

Mam ten kod w mojej aplikacji:

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

i chcę tylko ustawić orientację LinearLayout na pionową. Odpowiednik w XML to:

android:orientation="vertical"

Jak mogę to zrobić w kodzie, bez XML?

Greg
źródło

Odpowiedzi:

188

Nie możesz zmienić LinearLayoutorientacji używając jej LayoutParams. Można to zrobić tylko za pomocą LinearLayoutprzedmiotu.

LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);
Michał
źródło
8

Możesz użyć takiego:

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
źródło
4
druga linia powinna brzmiećmyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
abhyudayasrinet
4

Musisz zainstalować LinearLayout. Następnie możesz wywołać setOrientation ()

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

To powinno wystarczyć :)

Więcej informacji można znaleźć w interfejsie API systemu Android .

dudeldidadum
źródło
2

Przykład roboczy poniżej (to LayoutParams.WRAP_CONTENT, NIE LinearLayout.WRAP_CONTENT)

myLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
myLayout.setLayoutParams(layoutParams);
Tia
źródło
2

Na wypadek, gdyby pojawił się tu ktoś inny, jak ja, szukający odpowiedzi na platformę Xamarin, odpowiednikiem jest:

LinearLayout layout = /* ... */;
layout.Orientation = Orientation.Vertical;
layout.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent);
stovroz
źródło
-6

Po prostu użyj w następujący sposób: -

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

2 oznacza Vertical, 1 jest używany do horizontal.

Yama Raahi
źródło
1
Dlaczego miałbyś wracać 4 lata po zaakceptowaniu odpowiedzi i udzielać gorszej odpowiedzi? Nie powinieneś używać „2”. Należy użyć wartości statycznych zdefiniowanych w LinearLayout, np. LinearLayout.Vertical.
Stealth Rabbi
Ponieważ chciałem wiedzieć, czy mam rację, czy nie. :) Teraz dowiedziałem się, że lepiej jest używać wartości statycznych zdefiniowanych w linearLayout. :-)
Yama Raahi
Dlaczego więc po prostu nie spojrzeć na poprawną odpowiedź? Przepełnienie stosu nie powinno być używane do wpisywania domysłów jako ODPOWIEDZI. Jeśli nie wiesz, jak poprawnie odpowiedzieć na pytanie, nie pisz odpowiedzi. Teraz, gdy ktoś wejdzie na tę stronę, musi wiedzieć, jak zignorować twoją złą odpowiedź i szukać lepszych. To dlatego jesteś odrzucany.
Stealth Rabbi
Chciałem tylko wesprzeć mojego przyjaciela, w moim przypadku ten zadziałał i skomentowałem dla niego. A tak przy okazji, jeśli używanie 2 i 1 jest złe, to po co do diabła to istnieje.?
Yama Raahi
Istnieje, ponieważ jest to wartość surowa dołączona do stałych statycznych zdefiniowanych w LinearLayout, jak wskazał @StealthRabbi. Jednak nigdy nie powinieneś używać tych wartości.
Daniel Molina,