我冒着写一个重复的问题的风险,但在我研究another SO question的答案时,我意识到我找不到一个简单的问题和答案,包括设置{{1的重力和布局重力}}。另外,在谈论LinearLayout
而不仅仅是视图时,我对它们之间的区别感到困惑。我正在回答下面的问题。
以下是我看过的其他一些问题:
答案 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
。
这是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
结果如下:
答案 1 :(得分:1)
如果您使用的是KOTLIN,请使用or
运算符,如下所示:
GRAVITY = Gravity.RIGHT or Gravity.CENTER_VERTICAL
frameContainer.layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT,
GRAVITY)