如何以编程方式设置LinearLayout的gravity和layout_gravity

时间:2014-11-23 07:08:06

标签: android android-linearlayout gravity layout-gravity

我冒着写一个重复的问题的风险,但在我研究another SO question的答案时,我意识到我找不到一个简单的问题和答案,包括设置{{1的重力和布局重力}}。另外,在谈论LinearLayout而不仅仅是视图时,我对它们之间的区别感到困惑。我正在回答下面的问题。

以下是我看过的其他一些问题:

2 个答案:

答案 0 :(得分:18)

简短回答

设定重力

linearLayout.setGravity(Gravity.CENTER);

设置布局重力

// the LinearLayout's parent is a FrameLayout      
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(400, 400);
params.gravity = Gravity.TOP|Gravity.RIGHT;
linearLayout.setLayoutParams(params);

背景

以前,I have explained布局中视图的'gravity'和'layout_gravity'之间的差异。

设置gravity本身的LinearLayout会更改其中视图的位置。设置LinearLayout的layout_gravity会更改LinearLayout在其父布局中的排列方式。

此图片显示LinearLayout(白色)内的FrameLayout(棕色)。 LinearLayout的{​​{1}}设置为gravity,其center_horizontal设置为layout_gravity

enter image description here

这是xml:

right|bottom

以编程方式更改内容

以下代码显示了如何更改<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/llExample" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="right|bottom" android:background="#e3e2ad" android:gravity="center_horizontal" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="100dp" android:layout_height="50dp" android:background="#bcf5b1" android:text="TextView 1" /> <TextView android:id="@+id/textView1" android:layout_width="100dp" android:layout_height="50dp" android:background="#aacaff" android:text="TextView 2" /> </LinearLayout> </FrameLayout> 的{​​{1}}和gravity

layout_gravity

结果如下:

enter image description here

另见

答案 1 :(得分:1)

如果您使用的是KOTLIN,请使用or运算符,如下所示:

GRAVITY = Gravity.RIGHT or Gravity.CENTER_VERTICAL

frameContainer.layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
                     FrameLayout.LayoutParams.WRAP_CONTENT,
                     GRAVITY)