android:layout_gravity和android:gravity的区别

转载 2016年08月31日 14:08:07

1.首先来看看Android:layout_gravity和android:gravity的使用区别。

android:gravity:

这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置。例如,在一个Button按钮控件中设置如下两个属性,

android:gravity="left"和android:text="提交",这时Button上的文字“提交”将会位于Button的左部。


android:layout_gravity:

这个是针对控件本身而言,用来控制该控件在包含该控件的父控件中的位置。同样,当我们在Button按钮控件中设置android:layout_gravity="left"属性时,表示该Button按钮将位于界面的左部。


2.属性值:

这两个属性可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

一个属性可以包含多个值,需用“|”分开。其含义如下:

top 将对象放在其容器的顶部,不改变其大小.
bottom 将对象放在其容器的底部,不改变其大小.
left 将对象放在其容器的左侧,不改变其大小.
right 将对象放在其容器的右侧,不改变其大小.
center_vertical 将对象纵向居中,不改变其大小. 
垂直对齐方式:垂直方向上居中对齐。
fill_vertical 必要的时候增加对象的纵向大小,以完全充满其容器. 
垂直方向填充
center_horizontal 将对象横向居中,不改变其大小. 
水平对齐方式:水平方向上居中对齐
fill_horizontal 必要的时候增加对象的横向大小,以完全充满其容器. 
水平方向填充
center 将对象横纵居中,不改变其大小.
fill 必要的时候增加对象的横纵向大小,以完全充满其容器.
clip_vertical

附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容. 剪切基于其纵向对齐设置:顶部对齐时,剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部.

垂直方向裁剪

clip_horizontal

附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容. 剪切基于其横向对齐设置:左侧对齐时,剪切右侧;右侧对齐时剪切左侧;除此之外剪切左侧和右侧.

水平方向裁剪



3.特殊情况

当我们采用LinearLayout布局时,有以下特殊情况需要我们注意:

(1)当 android:orientation="vertical"  时, android:layout_gravity只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。

(2)当 android:orientation="horizontal" 时, android:layout_gravity只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。


下面以一个例子说明:(本例来源于:http://blog.csdn.net/dekunchenivan/article/details/6718678


  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <TextView    
  8.         android:layout_width="100dip"   
  9.         android:layout_height="100dip"  
  10.         android:layout_gravity="bottom|center_horizontal"  
  11.         android:gravity="center|bottom"  
  12.         android:background="#00FF00"  
  13.         android:text="@string/textview"  
  14.         />  
  15.   
  16.     <Button  
  17.         android:layout_width="100dip"  
  18.         android:layout_height="100dip"  
  19.         android:layout_gravity="bottom|left"  
  20.         android:gravity="left|top"  
  21.         android:background="#FF0000"  
  22.         android:text="@string/button"  
  23.         />  
  24. </LinearLayout>  

其效果如图:  





在TextView中,我们设置了android:layout_gravity="bottom|center_horizontal"  ,但该TextView并没有显示在屏幕的下方正中央,表明只有center_horizontal属性起了作用,这正是因为我们使用了LinearLayout布局,并且其android:orientation="vertical",只有水平方向的设置才会起作用,其他方向则会失效。同样,Button也一样。


Android布局中layout_gravity与gravity的使用总结

layout_gravity与gravity用途:设置控件LinearLayout布局中的对齐方式。 layout_gravity:设置该控件相对于父容器对齐方式。 gravity:设置子...
  • xiongkai520520
  • xiongkai520520
  • 2015年06月29日 13:11
  • 791

Android中gravity与layout_gravity的区别, Padding 与 margin 区别

LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在于:android:gravity用于设置View组件的对齐方式...
  • Jerome_XX
  • Jerome_XX
  • 2014年03月27日 15:59
  • 1003

android:gravity与android:layout_gravity的区别,以及代码设置对应属性

记录一下,怕以后忘记:属性说明:android:gravity: ① RelativeLayout、LinearLayout,等容器的子View相对自身的位置。 PS:FrameLayou...
  • a740169405
  • a740169405
  • 2015年11月06日 11:31
  • 2406

安卓开发学习之002 LinearLayout之android:layout_gravity详解

1.使用说明这个是针对控件本身而言,用来控制该控件在包含该控件的父控件中的位置。同样,当我们在Button按钮控件中设置android:layout_gravity=”left”属性时,表示该Butt...
  • a87b01c14
  • a87b01c14
  • 2015年10月23日 17:21
  • 2321

Android UI布局之区分 android:gravity 和 android:layout_gravity

Android 布局UI知识点记录 本文链接 http://blog.csdn.net/never_cxb/article/details/47156935 转载请注明出处 一言以蔽之 普遍...
  • never_cxb
  • never_cxb
  • 2015年07月30日 21:42
  • 1948

layout_gravity不起作用的原因分析

使用LinearLayout布局,其中的子View设置android:layout_gravity="bottom"属性后不起作用,原因是: 当LinearLayout设置android:orien...
  • hellokittylin
  • hellokittylin
  • 2015年08月06日 16:11
  • 4937

Android在java代码中使用layout_gravity和gravity这两个属性

在使用java控制控件属性时,大家可能会发现只有一个setGravity方法,这下尴尬了。 setGravity这个方法对应的是layout_gravity还是gravity呢? TextView...
  • z437955114
  • z437955114
  • 2015年10月10日 19:12
  • 4480

android:gravity="bottom|center_horizontal"的妙用

今天,上java课时,老师讲“|”表示短路或,我联想到Android布局中常见的    android:gravity="bottom|center_horizontal",根本就不是“或”的意思,于...
  • zhangjin1120
  • zhangjin1120
  • 2016年09月02日 10:47
  • 2157

android:layout_gravity 居中布局

文章出处:http://blog.csdn.net/shift_wwx 请转载的朋友标明出处~~ 垂直(vertical)的LinearLayout布局内无法通过控件的androi...
  • jingerppp
  • jingerppp
  • 2015年09月08日 10:36
  • 1314

android: layout_gravity与gravity区别及动态设置

1. layout_gravity与gravity区别:    gravity:是用来指定文字在控件中的对齐方式。    layout_gravity:是用来指定控件在父控件(布局)的对齐方式。 ...
  • jmflovezlf
  • jmflovezlf
  • 2014年11月12日 20:24
  • 2001
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android:layout_gravity和android:gravity的区别
举报原因:
原因补充:

(最多只允许输入30个字)