重力和布局之间的差异

我知道我们可以将以下值设置为android:gravityandroid:layout_gravity属性:

  • center
  • center_vertical
  • center_horizontal
  • 但是我对这两个都感到困惑。

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


    他们的名字可以帮助你:

  • android:gravity设置View的使用内容(即它的子视图)的严重性。
  • android:layout_gravity设置ViewLayout相对于其父项的重力。
  • 这里有一个例子。


    区别

    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视图。 将它用于LinearLayoutFrameLayout视图。 请参阅我的补充答案了解更多详情。
  • 视图的宽度(或高度)必须大于其内容。 否则gravity不会有任何影响。 因此, wrap_contentgravity是没有意义的。
  • 视图的宽度(或高度)必须小于父级。 否则, layout_gravity不会有任何效果。 因此, match_parentlayout_gravity在一起毫无意义。
  • layout_gravity=centerlayout_gravity=center_horizontal在此处看起来相同,因为它们处于垂直线性布局。 在这种情况下,你不能垂直居中,所以layout_gravity=center只能水平居中。
  • 这个答案只针对布局中的视图设置gravitylayout_gravity 。 要查看在设置父布局本身的gravity时发生的情况,请查看我在上面提到的补充答案。 (总结: gravityRelativeLayout上不能很好地工作,但对于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>
    

    有关

  • 视图的填充和边距之间的区别
  • Match_parent与wrap_content
  • 如何以编程方式设置LinearLayout的重力和布局重力
  • 链接地址: http://www.djcxy.com/p/2719.html

    上一篇: Difference between gravity and layout

    下一篇: How to align views at the bottom of the screen?