Android中的gravity和layout_gravity有什么区别?

我知道咱们能够为android:gravityandroid:layout_gravity属性设置如下值: android

  1. center
  2. center_vertical
  3. center_horizontal

可是我对这二者感到困惑。 编程

android:gravityandroid:layout_gravity的用法有什么区别? 布局


#1楼

若是要在视图中设置内容的重力,则将使用“ android:gravity”;若是要在其父视图中设置该视图(总体)的重力,则将使用“ android: layout_gravity”。 spa


#2楼

我在Sandip的博客上看到的我几乎错过的东西解决了个人问题。 他说layout_gravityLinearLayoutlayout_gravitycode

若是您使用的是LinearLayout ,而重力设置LinearLayout您不知所措(例如我),请切换到其余选项。 xml

我实际上切换到了RelativeLayout而后在包含的2个TextView上使用layout_alignParentLeftlayout_alignParentRight ,使它们在一行上向左和向右移动。 图片


#3楼

内部-外部 ip

  • gravity将内容排列在视图内部
  • lay out _gravity自编视图的位置自己以外

有时也有助于查看图片。 绿色和蓝色是TextViews ,其余两种背景颜色是LinearLayoutsutf-8

在此处输入图片说明

笔记

  • layout_gravity不适用于RelativeLayout视图。 将其用于LinearLayoutFrameLayout视图。 请参阅个人补充答案以获取更多详细信息。
  • 视图的宽度(或高度)必须大于其内容。 不然gravity将不会有任何影响。 所以, wrap_contentgravity没有意义。
  • 视图的宽度(或高度)必须小于父视图。 不然, layout_gravity将不起做用。 所以, match_parentlayout_gravity在一块儿毫无心义。
  • layout_gravity=center在这里看起来与layout_gravity=center_horizontal相同,由于它们处于垂直线性布局中。 在这种状况下,您不能垂直居中,所以layout_gravity=center仅水平居中。
  • 该答案仅涉及在布局内的视图上设置gravitylayout_gravity 。 若要查看在设置父布局自己的gravity时会发生什么,请查看我上面提到的补充答案 。 (摘要: gravityRelativeLayout上不能很好地工做,但在LinearLayout可能颇有用。)

所以请记住, layout _gravity在其layout中安排一个视图。 重力将内容安排在视图内部。 get

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>

有关


#4楼

看一下图像以了解重力


#5楼

只是想我会在这里添加本身的解释-来自iOS的背景,这就是我如何在iOS术语中内部化这两个:“布局重力”会影响您在超级视图中的位置。 “重力”会影响子视图在您内部的位置。 换句话说,“布局重力”使您本身定位,而重力使孩子定位。

相关文章
相关标签/搜索