gravity 和layout-gravity 有很多不同之处。我将解释我对这两个概念的经验(我通过观察和一些网站获得的所有信息)。
在FrameLayout 中使用重力和布局重力.....
注意:-
Gravity 在 View Content 中使用,因为某些用户有答案,并且对于所有 ViewGroup Layout 都是相同的。
Layout-gravity 与父视图一起使用,因为某些用户有答案。
Gravity and Layout-gravity 与 FrameLayout childs 一起工作更有用。 We can't use Gravity and Layout-gravity 在 FrameLayout 的标签中 ....
我们可以使用layout-gravity 在FrameLayout 中的任何位置设置子视图。
我们可以使用 FrameLayout 中的每一个重力值(例如:-center_vertical、center_horizontal、center、top 等),但在其他 ViewGroup 布局中是不可能的。
-
FrameLayout 完全致力于 Layout-gravity。示例:- 如果您在 FrameLayout 上工作,那么您不需要更改整个布局 即可添加新视图。您只需在FrameLayout 中将视图添加作为最后一个,然后给他Layout-gravity 的值。(这是 FrameLayout 布局重力的优势)。
看看例子......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center"
android:text="Center Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#1b64b9"
android:gravity="bottom"
android:layout_gravity="bottom|center"
android:text="Bottom Layout Gravity" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#d75d1c"
android:gravity="top"
android:layout_gravity="top|center"
android:text="Top Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="100dp"
android:textColor="#d71f1c"
android:gravity="top|right"
android:layout_gravity="top|right"
android:text="Top Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="bottom"
android:gravity="bottom"
android:text="Top Left Layout Gravity"/>
</FrameLayout>
输出:-
在 LinearLayout 中使用 Gravity 和 Layout-gravity .....
Gravity 的工作方式与上述相同,但不同之处在于我们可以在 LinearLayout View 和 RelativeLayout View 中使用 Gravity,这在 FrameLayout View 中是不可能的。
具有垂直方向的LinearLayout ....
注意:-这里我们只能设置layout_gravity的3个值,即(left | right | center(也称为center_horizontal))。
看看例子:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="Center Layout Gravity \nor \nCenter_Horizontal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="right"
android:text="Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:gravity="bottom"
android:text="Left Layout Gravity"/>
</LinearLayout>
输出:-
LinearLayout 方向为水平 ....
注意:- 这里我们还可以设置layout_gravity 的三个值,即(top | bottom | center(也称为center_vertical))。
看看例子:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Bottom \nLayout \nGravity"/>
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="center"
android:text="Center \nLayout \nGravity"/>
<TextView
android:layout_width="150dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:text="Left \nLayout \nGravity"/>
</LinearLayout>
输出:-
注意:- 我们不能在RelativeLayout Views 中使用layout_gravity,但我们可以使用gravity 将RelativeLayout 子级设置为相同的位置....