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?

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

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

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 .


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

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

-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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.