代码中的布局方向

97

我在我的应用程序中有这段代码:

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

我只想将LinearLayout的方向设置为垂直方向。在XML中等效的代码是:

android:orientation="vertical"

我该如何在代码中实现它,而不需要使用XML?

6个回答

203

使用LayoutParams无法更改LinearLayout的方向,只能通过LinearLayout对象来完成。

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

12

你可以像这样使用:

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

4

您需要实例化LinearLayout。然后您可以调用setOrientation()方法。

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

那应该可以完成工作 :)

更多信息请查看Android API


2

如果有其他像我一样寻找Xamarin答案的人,请注意,其等效物为:

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

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

-6

使用方法如下:

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

2代表垂直,1用于水平


2
为什么在答案被接受4年后你会回来给出一个更差的答案?你不应该使用'2',而应该使用LinearLayout中定义的静态值,例如LinearLayout.Vertical。 - Stealth Rabbi
因为我想知道我是对还是错。现在我知道最好使用在linearLayout中定义的静态值。 :-) - Yama Raahi
1
那为什么不直接看正确答案呢?Stack Overflow不应该用来把你的猜测当作答案。如果你不知道如何正确回答问题,那就不要写答案。现在当有人来到这个页面时,他们必须知道忽略你的错误答案并寻找更好的答案。这就是为什么你被投票降低分数。 - Stealth Rabbi
我只是想帮助我的朋友,就我个人而言,这个方法对他起作用了,所以我为他做了评论。 顺便说一句,如果使用2和1是错误的,那么为什么它还存在呢? - Yama Raahi
它存在是因为它是附加在LinearLayout中定义的静态常量的原始值,正如@StealthRabbi所指出的那样。然而,你永远不应该使用这些值。 - Daniel Molina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接