重力和布局之间的差异
我知道我们可以将以下值设置为android:gravity
和android:layout_gravity
属性:
center
center_vertical
center_horizontal
等 但是我对这两个都感到困惑。
android:gravity
和android:layout_gravity
的用法有什么区别?
他们的名字可以帮助你:
android:gravity
设置View
的使用内容(即它的子视图)的严重性。 android:layout_gravity
设置View
或Layout
相对于其父项的重力。 这里有一个例子。
区别
android:layout_gravity
是视图的外部重力。 指定视图应该触及其父边界的方向。
android:gravity
是该视图的内部重力。 指定其内容应在哪个方向对齐。
HTML / CSS等价物
Android | CSS
————————————————————————+————————————
android:layout_gravity | float
android:gravity | text-align
简单的技巧来帮助你记住
将layout-gravity
看作“Lay-outside-gravity”。
内部 - 外部
gravity
排列视图内的内容。 lay out _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供您参考:
<?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>