我知道我们可以为android设置以下值:gravity和android:layout_gravity财产:
居中中心_垂直center_horizontal等。
但我对这两者都感到困惑。
android:gravity和android:layout_gravity的用法有什么区别?
我知道我们可以为android设置以下值:gravity和android:layout_gravity财产:
居中中心_垂直center_horizontal等。
但我对这两者都感到困惑。
android:gravity和android:layout_gravity的用法有什么区别?
当前回答
如果我们想设置视图中内容的重力,那么我们将使用“android:gravity”,如果我们想在父视图中设置此视图(作为一个整体)的重力,则我们将使用”android:layout_gravity“。
其他回答
两者的基本区别在于-
android:gravity用于视图的子元素。
android:layoutgravity用于相对于父视图的此元素。
他们的名字可以帮助您:
android:gravity设置其使用的视图的内容(即其子视图)的重力。android:layout_gravity设置视图或布局相对于其父对象的重力。
这里有一个例子。
android:gravity
用于调整视图相对于其指定位置(分配区域)的内容。如果layout_width等于“wrap_content”,android:gravity=“left”将不会执行任何操作
android:layout_gravity
用于相对于父文件或布局文件的视图本身。
Gravity和layout_Gravity都是XML属性。
android:gravity属性用于排列视图中内容的位置(例如Button小部件中的文本)。
android:layout_gravity用于安排整个视图相对于其容器的位置。
有关详细信息,请参阅此链接。
内部-外部
重力在视图内排列内容。layout_gravity将视图的位置安排在其自身之外。
有时看照片也会有帮助。绿色和蓝色是文本视图,其他两种背景色是LinearLayouts。
笔记
layout_gravity不适用于RelativeLayout中的视图。用于LinearLayout或FrameLayout中的视图。有关更多详细信息,请参阅我的补充答案。视图的宽度(或高度)必须大于其内容。否则重力不会有任何影响。因此,包裹和重力在一起是没有意义的。视图的宽度(或高度)必须小于父视图。否则layout_gravity不会有任何影响。因此,match_parent和layout_gravity在一起没有意义。layout_gravity=center与此处的layout_ggravity=center_horizontal看起来相同,因为它们是垂直线性布局。在这种情况下,不能垂直居中,因此layout_gravity=仅水平居中。这个答案只涉及在布局中的视图上设置重力和layout_gravity。要查看当您设置父布局本身的重力时会发生什么,请查看我上面提到的补充答案。(总结:重力在RelativeLayout中不太适用,但在LinearLayout中可能有用。)
所以请记住,layout_gravity在布局中排列视图。重力在视图内排列内容。
xml
以下是上述图像的xml,供您参考:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="left"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center_horizontal"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="right"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center"
android:text="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="layout_gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="left"
android:background="#bcf5b1"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:background="#aacaff"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="right"
android:background="#bcf5b1"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="#aacaff"
android:text="center" />
</LinearLayout>
</LinearLayout>
相关的
视图填充和边距之间的差异匹配_租用vs包装_内容如何编程设置LinearLayout的重力和布局重力