重力和layout_gravity之间的确切区别是什么?

17

可能是重复问题:
Android - gravity 和 layout_gravity有什么区别?

我一直在处理 Android 的 XML 文件。我使用 android:layout_gravity="center" 将组件对齐到特定位置。

最近,当我正在处理类似于对话框的活动时,我遇到了 android:gravity="center"。我发现,gravity 被用来将其子元素对齐到特定位置。

我将分享一个关于它的示例,

android:gravity="center"

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:orientation="vertical" >
            <EditText
                android:id="@+id/enterNumberEdit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:hint="Enter No." >

                <requestFocus />
            </EditText>
            </LinearLayout>

此属性将LinearLayout的子元素居中对齐。

android:layout_gravity="center"

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:orientation="vertical"
    android:background="@drawable/dialog_background" >
</LinearLayout>

它将LinearLayout本身居中对齐。

现在我的问题是:

  1. 我是否正确地假设了gravity是用于子组件,而layout_gravity用于父组件。
  2. 何时选择gravity而不是layout_gravity

到目前为止,我已经在xml上找到了这么多的解释。我想听到更好的解释。如果我有错误,请让我知道。


2
gravity 用于对齐视图的内容,layout_gravity 用于对齐视图在其父容器中的位置。 - K-ballo
这些视频帮助我很多地理解了它们之间的区别:https://www.youtube.com/watch?v=DxfYeAUd238 - Shomu
3个回答

11
  1. 是的,您的理解是正确的。任何layout_属性都会给父视图提供指令。
  2. 通常情况下,如果一个视图占据了其父视图的全部宽度/高度,那么您就不需要指定layout_gravity,您可能会发现gravity更有用。如果您的视图没有占据其父视图的整个尺寸,则您可能需要根据所需的外观对其进行对齐。

4
他们的名字应该可以帮助你:
android:gravity 设置在View中使用时其内容的位置。
android:layout_gravity 设置在父视图中ViewLayout的位置。
更多信息请访问此网站

1

android:gravity设置了其所使用View的内容的对齐方式。

android:layout_gravity设置了其父布局中View或Layout的对齐方式。


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