携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情 >>
gravity与layout_gravity的区别
在Android开发过程中,我们经常需要设置视图的对齐方式,用到的属性有两种,分别是layout和layout_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中只有垂直方向的对齐才起作用
- 当容器设置
gravity和layout_gravity传入的参数可以在官方文档的参数列表中查询- 官方文档 >>
- 参数列表
| 属性 | 含义 |
| --- | --- |
|
top| 将对象放在其容器的顶部,不改变其大小 | |bottom| 将对象放在其容器的底部,不改变其大小 | |left| 将对象放在其容器的左侧,不改变其大小 | |right| 将对象放在其容器的右侧,不改变其大小 | |center_vertical| 将对象纵向居中,不改变其大小。垂直对齐方式:垂直方向上居中对齐 | |fill_vertical| 必要的时候增加对象的纵向大小,以完全充满其容器。垂直方向填充 | |center_horizontal| 将对象横向居中,不改变其大小。水平对齐方式:水平方向上居中对齐 | |fill_horizontal| 必要的时候增加对象的横向大小,以完全充满其容器。水平方向填充 | |center| 将对象横纵居中,不改变其大小 | |fill| 必要的时候增加对象的横纵向大小,以完全充满其容器。 | |clip_vertical| 附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容。剪切基于其纵向对齐设置:顶部对齐时剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部。垂直方向裁剪 | |clip_horizontal| 附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容。剪切基于其横向对齐设置:左侧对齐时剪切右侧;右侧对齐时剪切左侧;除此之外剪切左侧和右侧。水平方向裁剪 |