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

What is the difference between gravity and layout_gravity in Android?

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

  • center
  • center_vertical
  • center_horizontal
  • 但我对这两件事都感到困惑。

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


    You should help their names。P></

    • android:gravitythe contents of the sets的重力(即其子视图)是Viewof the used。
    • 重力android:layout_gravitysets of the the parent or to its ViewLayout相关。

    和an example is here。P></


    在你外出 </P >

    • gravityarranges里面内容的视图。
    • layout_gravityarranges的视图的位置的外院本身。

    有时它helps看到一个电影,太。在绿色和蓝色是TextViews和其他两个背景颜色是LinearLayouts。。。。。。。 </P >

    enter image description here </P > Notes

    • layout_gravity并不工作方法的观点,在一个RelativeLayout。。。。。。。使用它的方法的观点,在一个LinearLayoutFrameLayout。。。。。。。看我的答案补充方法的更多细节。
    • 在视图的宽度(或高度),已经是大于它的内容。gravity,否则不会有任何的影响。因此,wrap_contentgravitymeaningless是在一起的。
    • 在视图的宽度(或高度),已经是小于的父母。layout_gravity,否则不会有任何的影响。因此,match_parentlayout_gravitymeaningless是在一起的。
    • layout_gravity=center看起来同样为layout_gravity=center_horizontal这里,因为他们是在一个垂直的线性布局。你不能在这vertically中心的情况下,SO layout_gravity=center只读的中心水平。
    • 这个答案与gravity只读产品处理的设置和layout_gravity的观点,在一个布局。看到什么发生当你设定的gravity杂志《父母本身的布局,结帐的补充回答我上面提到的。(小结:gravity不好的工作是一个有用的RelativeLayout,但可以用LinearLayout。)

    所以记住,布局_重力arranges A View在其版图。重力arranges里面内容的视图。 </P > XML

    这里是在XML中以上的图像设计你的参考: </P >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <?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>

    相关

    • 差分之间的一个视图的PADDING ON和边缘
    • 火柴_亲子与包的内容_
    • 如何设定的重力和重力都布置一个linearlayout由程序

    the difference

    android:layout_gravityis the view of the"重力"。在specifies which should the direction the view触摸其parent'美国边境。P></

    android:gravityView of that is the inside的重力。在specifies its contents which should align方向。P></equivalents HTML / CSS

    1
    2
    3
    4
    Android                 | CSS
    ————————————————————————+————————————
    android:layout_gravity  | float
    android:gravity         | text-align

    容易帮助你记得我

    layout-gravityas"布局"重力"。P></


    答案:使用短android:gravityor to Child of setGravity()重力控制视图的容器在使用前android:layout_gravityof a;setLayoutParams()to View of an重力控制在容器中的主体。P></

    龙的故事:在重力的控制在这样的线性布局容器LinearLayoutor there are as RadioGroup,方法二:P></

    1)to the child of视图的控制重力的容器(LinearLayoutof a as You did你的电子书),使用android:gravity(not android:layout_gravity)在布局XML文件或setGravity()在队列的方法。P></

    2)to the view of a child重力控制在其容器,使用android:layout_gravityXML属性。在一个队列,LinearLayout.LayoutParamsto get the needs of the view和集其重力。here is that a button实例代码集的对象:在horizontally底集装箱P></

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import android.widget.LinearLayout.LayoutParams;
    import android.view.Gravity;
    ...

    Button button = (Button) findViewById(R.id.MyButtonId);
    // need to cast to LinearLayout.LayoutParams to access the gravity field
    LayoutParams params = (LayoutParams)button.getLayoutParams();
    params.gravity = Gravity.BOTTOM;
    button.setLayoutParams(params);

    LinearLayoutfor the horizontal重力水平的容器,其子view is left of one after another -对准和cannot be changed。center_horizontalhas to setting android:layout_gravity不效。默认的重力中心(is the vertical垂直或中心_ can be changed to)和顶部或底部。默认值是layout_gravity真爱but the Android把它vertically -1中心。P></

    to change the Child of视图的水平位置在水平线性在容器边缘,一个可以使用layout_weightof the Child,填充和海景。P></

    similarly for vertical view,the Group of its重力容器,垂直对准一个view is child below another顶和cannot be changed。默认的重力中心(the horizontal center_horizontalor is can be changed to)和左或右。P></

    其实,孩子也有这样的观点android:gravityas a button and the method to XML属性setGravity()its the Child -视图-控制在它的文本。Button.setGravity(int)to this is the entry developer.android.com联。P></


    从什么我可以采集的重力引力布局_ of that is the inside its view is the parent,重力和重力inside that View of the children。P></

    我认为这是正确的,但最好的方式找到了is to play周围。P></


    >   </P >   <P>   查找表的图像是清晰的关于重力   </P >   </p>
<hr><P>虽然is already have the questionYou can find the examples)http:///layoutexamples.zip juanpickselov.comP></

    created the Eclipse中的文件和子文件夹,有.svn removed included the strings,颜色,风格,布局文件等。茶叶是主要点of the演示。自从我在Java和Android开发newbie酮可能find the Java的,低效的。can be copied the files into an Eclipse项目前我也used them with the android开发NetBeans IDE插件available for that。P></


    如果我们想在重力of content set the inside",那么我们将在视图:使用Android重力",如果我们想集重力of this view(as a parent within its Whole)然后我们将使用"视图布局:_ Android重力"。P></


    是的,我的思想D添加我自己解释这里来了从一个背景是,如果这是怎么了,我已经internalized两在iOS的术语:"布局affects重力"你的位置在父视图"。重力"affects在子视图的位置,你的在你的。另一个说的通,版图的重力位重力在你自己的位置,你的孩子。 </P >


    gravitylayout-gravity有很多不同。我将解释我对这两个概念的经验(我所得到的所有信息,由于我的观察和一些网站)。

    Use Of Gravity and Layout-gravity in FrameLayout .....

    注:

  • 重力在视图内容中使用,因为有些用户有答案,所有ViewGroup Layout的重力相同。

  • layout-gravity与父视图一起使用,因为有些用户有答案。

  • Gravity and Layout-gravityFrameLayout儿童更有用。框架布局标签中的We can't use Gravity and Layout-gravity

  • 我们可以使用layout-gravityFrameLayout中的任何位置设置子视图。

  • 我们可以使用框架布局中的每个重力值(例如:center_verticalcenter_horizontalcentertop等),但其他视图组布局不可能使用重力值。

  • FrameLayout全面研究layout-gravity。示例:如果您在FrameLayout上工作,那么您不需要更改整个布局来添加新视图。您只需在FrameLayout中添加最后一个视图,并为他提供layout-gravity的价值(这是框架布局的布局重力的优势)。

  • have look on example ......

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?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>

    输出:

    g1

    Use Of Gravity and Layout-gravity in LinearLayout .....

    gravity的工作原理与上述相同,但这里不同的是,我们可以利用LinearLayout ViewRelativeLayout View内部的重力,这在FrameLayout View中是不可能的。

    LinearLayout with orientation vertical ....

    注:这里我们只能设置3个layout_gravity的值,即(leftrightcenter(也称center_horizontal)。

    have look on example :-

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?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
    or
    Center_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>

    输出:

    g2

    LinearLayout with orientation horizontal ....

    注:这里我们还可以设置3个layout_gravity的值,即(topbottomcenter(也称center_vertical)。

    have look on example :-

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?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
    Layout
    Gravity"/>

        <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
    Layout
    Gravity"/>


        <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
    Layout
    Gravity"/>

    </LinearLayout>

    输出:

    g3

    注:我们不能在RelativeLayout Views中使用layout_gravity,但我们可以使用gravityRelativeLayout个孩子设置到相同的位置……


    记住这一点的一个简单技巧是,重力适用于地球内部的我们。因此,android:gravity是用于内部视图。

    记住布局中的"外引力",这有助于您记住,android:layout_gravity指的是视图外部。


    我看到的东西在我的博客sandip'几乎错过,固定我的问题。He does not work with LinearLayoutlayout_gravity说。P></

    如果你使用的是LinearLayoutsettings and the重力驱动螺母(我喜欢你),然后切换到其他的东西。P></

    我真的layout_alignParentLeftused to a RelativeLayout开关和layout_alignParentRighton the to get them 2包含一TextViews在线网上去让让左和右。P></


    在基本的双差分之间的这是…… </P >

    Android的:是用于重力子元素的视图。 </P >

    Android的:布局_重力是用于这一元与相对于父视图。 </P >


    重力:允许您移动容器中的内容。(如何放置子视图)。

    重要事项:(在可用空间内沿X轴或Y轴移动)。

    例如:假设您要使用linearlayout(height:match_parent,width:match_parent)作为根级别元素,那么您将有完整的框架空间可用;子视图表示linearlayout中的2个文本视图(height:wrap_content,width:wrap_content)可以使用重力的相应值沿x/y轴移动。在父母身上。

    布局重力:允许您仅沿X轴覆盖父重力行为。

    重要提示:(在可用空间内沿X轴移动[覆盖])。

    示例:如果您记住前面的示例,我们知道重力使我们能够沿着X/Y轴移动,即将文本视图放置在线性布局中。假设linearlayout指定了重力:中心;这意味着每个文本视图都需要垂直和水平居中。现在,如果我们希望一个textview向左/向右,我们可以使用textview上的布局重力覆盖指定的重力行为。

    额外好处:如果你深入挖掘,你会发现text view中的文本充当子视图;所以如果你在textview上应用重力,textview中的文本会四处移动。(整个概念也适用于此)


    android:gravity是用来指定如何浇内容的对象在对象本身。在另一个单词,比如Android:重力是用来指定在重力的内容的视图。 </P >

    android:layout_gravity是一个属性的孩子能供应到它的父,到指定的重力的视图在其父母的。 </P >

    用更多的细节,你可以访问 </P >

    http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html


    重力用于在视图中设置文本对齐,但布局重力用于自行设置视图。让我们举个例子,如果你想对齐用edittext编写的文本,然后使用重力,你想对齐这个edittext或任何按钮或任何视图,然后使用布局重力,所以非常简单。


    重力:用于简单视图,如文本视图、编辑文本等。

    布局重力:仅用于当前视图的相对父视图上下文中的重力,如线性布局或框架布局,以使视图位于父视图的中心或任何其他重力。


    重力——适用于它自己的观点。

    布局重力---适用于与其父级相关的视图。


    1
    android:gravity

    用于调整视图相对于其指定位置(已分配区域)的内容。如果layout_width等于"wrap_content"的话,android:gravity="left"是不会做任何事情的。

    1
    android:layout_gravity

    用于相对于父文件或布局文件查看自身。


    android:gravity->设置所用视图内容的重力。

    android:layout_gravity->设置父视图或布局的重力