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


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

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

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

android:orientation="vertical"

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

6 71

6 ответов:

вы не можете изменить LinearLayout's ориентация с помощью его LayoutParams. Это можно сделать только с помощью

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

LinearLayout myll = (LinearLayout) findViewById(R.id.yourLinearLayout);
myll.setLayoutParams(LinearLayout.WRAP_CONTENT, LinearLayout.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 в качестве параметров, а не макетом.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.