我知道我们可以将以下值设置为android:gravity
和android:layout_gravity
属性:
center
center_vertical
center_horizontal
等但我对这两个问题感到困惑。
android:gravity
和android:layout_gravity
的用法有什么区别?
他们的名字可以帮助你:
android:gravity
设置它所使用的View
的内容(即它的子视图)的重力。 android:layout_gravity
设置View
或Layout
相对于其父级的重力。 而一个例子是在这里 。
gravity
排列视图内的内容。 lay <strong>out</strong> _gravity
安排的本身之外的视图的位置。 有时候看图片也会有所帮助。绿色和蓝色是TextViews
,另外两种背景颜色是LinearLayouts
。
layout_gravity
不适用于RelativeLayout
视图。将它用于LinearLayout
或FrameLayout
视图。有关详细信息,请参阅我的补充答案 。 gravity
不会有任何影响。因此, wrap_content
和gravity
在一起是没有意义的。 layout_gravity
将不起任何作用。因此, match_parent
和layout_gravity
一起没有意义。 layout_gravity=center
在这里看起来与layout_gravity=center_horizontal
相同,因为它们处于垂直线性布局中。在这种情况下,您不能垂直居中,因此layout_gravity=center
仅水平居中。 gravity
和layout_gravity
。要查看设置父布局本身的gravity
时会发生什么,请查看我上面提到的补充答案 。 (总结: gravity
在RelativeLayout
上不能很好地工作,但对于LinearLayout
可能很有用。) 所以请记住, layout _gravity 在其布局中排列视图。重力排列视图内的内容。
以下是上述图片的 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>
android:layout_gravity
是 View 的外部重力。指定视图应触及其父边框的方向。
android:gravity
是该视图的内部重力。指定其内容应对齐的方向。
Android | CSS
————————————————————————+————————————
android:layout_gravity | float
android:gravity | text-align
将layout-gravity
视为 “外部重力”。