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

У меня есть этот код в моем приложении:

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

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

android:orientation="vertical"

Как я могу сделать это в коде без XML?

Ответ 1

Вы не можете изменить ориентацию LinearLayout, используя ее LayoutParams. Это можно сделать только с объектом LinearLayout.

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

Ответ 2

Вы можете использовать как этот:

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

Ответ 3

Вам нужно указать LinearLayout. После этого вы можете вызвать setOrientation()

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

Это должно выполнить задание:)

Для получения дополнительной информации проверьте Android API.

Ответ 4

Рабочий образец ниже (это LayoutParams.WRAP_CONTENT, NOT LinearLayout.WRAP_CONTENT)

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

Ответ 5

В случае, если кто-то еще прибывает сюда, как я, ища ответ для 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.