Орієнтація макета в коді


90

У моєму додатку є цей код:

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

і я просто хочу встановити орієнтацію LinearLayout на вертикальну. Еквівалент у XML:

android:orientation="vertical"

Як я можу це зробити в коді, без XML?

Відповіді:


188

Ви не можете змінити LinearLayoutорієнтацію, використовуючи його LayoutParams. Це можна зробити лише з LinearLayoutпредметом.

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

8

Ви можете використовувати, як цей:

LinearLayout myll = (LinearLayout) findViewById(R.id.yourLinearLayout);
myll.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
myll.setOrientation(LinearLayout.VERTICAL);

4
другий рядок повинен бутиmyLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
abhyudayasrinet

4

Вам потрібно встановити екземпляр LinearLayout. Після цього ви можете зателефонувати setOrientation ()

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

Це повинно зробити роботу :)

Для отримання додаткової інформації перевірте Android API .


2

Робочий зразок нижче (це LayoutParams.WRAP_CONTENT, А НЕ LinearLayout.WRAP_CONTENT)

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

2

Якщо хтось інший приїде сюди, як я, шукаючи відповіді на Xamarin, еквівалент:

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

-6

Просто використовуйте наступне: -

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

2 означає Vertical, 1 використовується для horizontal.


1
Чому б ви повернулися через 4 роки після прийняття відповіді і дали гіршу відповідь? Не слід використовувати "2". Ви повинні використовувати статичні значення, визначені у LinearLayout, наприклад LinearLayout.Vertical.
Stealth Rabbi

Тому що я хотів знати, чи маю я рацію чи помиляюся. :) Тепер я довідався, що краще використовувати статичні значення, визначені у linearLayout. :-)
Яма Раахі 06.03.16

Тоді чому б просто не поглянути на правильну відповідь? Переповнення стеку не слід використовувати для того, щоб поставити ваші здогадки як ВІДПОВІДІ. Якщо ви не знаєте, як правильно відповісти на питання, тоді не пишіть відповіді. Тепер, коли хтось заходить на цю сторінку, він повинен знати, щоб ігнорувати вашу неправильну відповідь і шукати кращих. Ось чому вас голосують проти.
Stealth Rabbi

Я просто хотів внести свій внесок у свого друга, у моєму випадку цей спрацював, і я прокоментував його. ДО ВСЬОГО, якщо неправильно використовувати 2 та 1, то чому, блін, вони існують.?
Яма Раахі

Він існує, оскільки це вихідне значення, прикріплене до статичних констант, визначених у LinearLayout, як зазначив @StealthRabbi. Однак ніколи не слід використовувати ці значення.
Даніель Моліна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.