Ответ 1
Вы не можете изменить ориентацию LinearLayout
, используя ее LayoutParams
. Это можно сделать только с объектом LinearLayout
.
LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);
У меня есть этот код в моем приложении:
LinearLayout.LayoutParams params =
new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
и я просто хочу установить ориентацию LinearLayout на вертикальную. Эквивалент в XML:
android:orientation="vertical"
Как я могу сделать это в коде без XML?
Вы не можете изменить ориентацию LinearLayout
, используя ее LayoutParams
. Это можно сделать только с объектом LinearLayout
.
LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);
Вы можете использовать как этот:
LinearLayout myll = (LinearLayout) findViewById(R.id.yourLinearLayout);
myll.setLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
myll.setOrientation(LinearLayout.VERTICAL);
Вам нужно указать LinearLayout. После этого вы можете вызвать setOrientation()
LinearLayout myLayout = ...;
myLayout.setLayoutParams(new LayoutParams(LinearLayout.WRAP_CONTENT, LinearLayout.WRAP_CONTENT);
myLayout.setOrientation(LinearLayout.VERTICAL);
Это должно выполнить задание:)
Для получения дополнительной информации проверьте Android API.
Рабочий образец ниже (это 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);
В случае, если кто-то еще прибывает сюда, как я, ища ответ для Xamarin, эквивалент:
LinearLayout layout = /* ... */;
layout.Orientation = Orientation.Vertical;
layout.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent);
Просто используйте следующее: -
LinearLayout mlayout = new LinearLayout(context);
mlayout.setOrientation(2);
2 означает Vertical
, 1 используется для horizontal
.