gravity与layout_gravity有何不同

400 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情 >>

gravity与layout_gravity的区别

在Android开发过程中,我们经常需要设置视图的对齐方式,用到的属性有两种,分别是layoutlayout_gravity两种,那么它们两者有什么区别呢?

gravity

  • gravity 是设置子元素在该容器内的对齐方式
  • 若控件内无子元素,则该项设置不生效
  • 若该控件内子元素也设置了gravity属性,则子控件的gravity属性优先级更高
  • 在线性布局LinearLayout中设置该属性,该属性不生效

layout_gravity

  • layout_gravity 是设置该控件相对于父容器的对齐方式

参数属性

  • 若想同时设置多个对齐属性,可以使用|符号分隔开,例:
    • android:gravity = "center_horizontal|center_vertical"
  • 在相对布局RelativeLayout中,两个对齐属性的设置将会失效
  • 若容器设置了android:orientation属性,会影响layout_gravity属性的生效方向
    • 当容器设置android:orientation="vertical"layout_gravity中只有水平方向的对齐才起作用
    • 当容器设置android:orientation="horizontal"layout_gravity中只有垂直方向的对齐才起作用
  • gravitylayout_gravity传入的参数可以在官方文档的参数列表中查询
  • 参数列表 | 属性 | 含义 | | --- | --- | | top | 将对象放在其容器的顶部,不改变其大小 | | bottom | 将对象放在其容器的底部,不改变其大小 | | left | 将对象放在其容器的左侧,不改变其大小 | | right | 将对象放在其容器的右侧,不改变其大小 | | center_vertical | 将对象纵向居中,不改变其大小。垂直对齐方式:垂直方向上居中对齐 | | fill_vertical | 必要的时候增加对象的纵向大小,以完全充满其容器。垂直方向填充 | | center_horizontal | 将对象横向居中,不改变其大小。水平对齐方式:水平方向上居中对齐 | | fill_horizontal | 必要的时候增加对象的横向大小,以完全充满其容器。水平方向填充 | | center | 将对象横纵居中,不改变其大小 | | fill | 必要的时候增加对象的横纵向大小,以完全充满其容器。 | | clip_vertical | 附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容。剪切基于其纵向对齐设置:顶部对齐时剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部。垂直方向裁剪 | | clip_horizontal | 附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容。剪切基于其横向对齐设置:左侧对齐时剪切右侧;右侧对齐时剪切左侧;除此之外剪切左侧和右侧。水平方向裁剪 |

如有不足之处,欢迎在评论区指导纠正~