关于它两的使用和区别可以参考文章Android布局学习——android:gravity和android:layout_gravity的区别 https://www.cnblogs.com/JohnTsai/p/4231729.htmlAndroid gravity和layout_gravity的区别https://www.cnblogs.com/xqz0618/p/gravity.html

共同点

两者都是设置对齐方式的属性。内部的属性值相同。

差异点:

看名字就能看出一些区别:android:layout_gravity和layout有关。

     android:gravity  设置 View的内容的gravity。

    android:layout_gravity  设置View或Layout的在它父布局中的gravity。

Gravity属性

gravity:  该属性用来定义view的内部内容(或子控件)在该view内部x,y轴方向上摆放的位置,是上还是下,或左或右。

举例来说

1、假如view是一TextView,则gravity属性则是设置其内部文字的对齐方式;

2、假如TextView是ViewGroup组件如LinearLayout,则gravity属性则是设置其内部view组件的对齐方式。

其中fill和fill_xxx相关的属性是和fill_parent一样,估计已经被match_xxx替换了,所以不用管它。

clip_vertical: 这是一个附加选项,表示如果子控件的上或下边界超出父容器的边界,子控件的上或下将被裁剪父容器的高度大小。clip属性基于垂直gravity: gravity=top,将裁剪下边界;gravity=bottom,将裁剪上边界,或者上下边界都不裁剪;

clip_horizontal:  同理clip_vertical

start:子控件被放置在父容器的开始位置,相当于“top | left”。不会改变子控件尺寸。

end: 子控件被放置在父容器的开始位置,相当于“bottom | right”。不会改变子控件尺寸。

center:子控件被放置在父容器垂直和水平方向的中间位置。不会改变子控件尺寸。

center_vertical:子控件被放置在父容器垂直方向的中间位置。不会改变子控件尺寸。

center_horizontal:子控件被放置在父容器水平方向的中间位置。不会改变子控件尺寸。

Layout_gravity属性

view上定义的layout_gravity是提供给它的父容器使用的,表明view应该摆放在父容器x,y方向上什么位置上。对于layout_gravity来说不是什么情况下都能设置其属性都能生效(比如RelativeLayout),而且在不同的ViewGroup中产生的效果也会不同。

举例来说

1、LinearLayout

父容器是LinearLayout,”orientation=vertical“时,容器内部view设置的layout_gravity属性只在左、右水平方向上生效;

父容器是LinearLayout,”orientation=horizontal“时,容器内部view设置的layout_gravity属性只在上、下垂直方向上生效;

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="#f00"android:orientation="horizontal"><TextViewandroid:text="TextView在这里"android:layout_width="200dp"android:layout_height="200dp"android:background="#ff0"android:layout_gravity="center"/>
</LinearLayout>

效果:

之所以出现上面的效果,是因为布局容器的布局方向是水平的。所以线性布局内部的所有view都会一个接一个地水平排列。这种情况下,添加view的话会往水平方向添加,所以水平方向不能移动布局内部的view;布局内部垂直方向假如view不能铺满布局的高度,则view在上下方向有空隙空间,就可以挪动。基于此,所以可以调节view上下的位置。

当设置android:orientation="vertical"时效果为:

 原因分析同上。

2、FrameLayout

<FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="#f00"><TextViewandroid:text="TextView在这里"android:layout_width="200dp"android:layout_height="200dp"android:background="#ff0"android:layout_gravity="center"/>
</FrameLayout>

效果:

项目中使用

在实际项目中想实现如下效果,其中水果对应的imageview要求是居中摆放的。

xml文件内容如下:

需要强调一点的是,为了让水果控件imageview在水平和垂直方向都居中显示,在imageview外部添加了一层线性布局,给该线性布局添加gravity="center"才让imageview水平垂直方向都居中了。 假如我们直接使用imageview(xml文件中被注释部分), 由于最外层线性布局是垂直方向排列布局的, 其内部view只能在水平方向对齐,这种情况下我们没办法让imageview在垂直方向居中。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".activity.TestAnimatorActivity"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:paddingRight="30dp"android:paddingLeft="30dp"><Buttonandroid:id="@+id/play"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:text="开始"/><Buttonandroid:id="@+id/stop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:text="暂停"/></RelativeLayout><!--<ImageViewandroid:id="@+id/image"android:layout_width="300dp"android:layout_height="300dp"android:background="#ff0000"/>--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"><ImageViewandroid:id="@+id/image"android:layout_width="300dp"android:layout_height="300dp"android:background="@drawable/framelist"/></LinearLayout></LinearLayout>

layout_gravity和gravity的区分和应用相关推荐

  1. android:layout_gravity=end,Android中 layout_gravity和gravity的区别

    前言:gravity是设置自身内部元素的对齐方式. 一.比如一个TextView,则是设置内部文字的对齐方式.如果是ViewGroup组件如LinearLayout的话,则为设置它内部view组件的对 ...

  2. Android零基础入门第26节:layout_gravity和gravity大不同

    Android零基础入门第26节:layout_gravity和gravity大不同 原文:Android零基础入门第26节:layout_gravity和gravity大不同 上一期我们一起学习了L ...

  3. 方向gravity_两种对齐方式,layout_gravity和gravity大不同

    原标题:两种对齐方式,layout_gravity和gravity大不同 上一期我们一起学习了LinearLayout线性布局的方向.填充模型和权重,本期来一起学习LinearLayout线性布局的对 ...

  4. android:layout_gravity=quot;topquot;,android:layout_gravity和gravity的区别

    文章转自http://blog.csdn.net/shakespeare001/article/details/784346,给出了很详细的解释. 1.首先来看看Android:layout_grav ...

  5. android layout_gravity center,android: layout_gravity与gravity区别及动态设置

    1. layout_gravity与gravity区别: gravity:是用来指定文字在控件中的对齐方式. layout_gravity:是用来指定控件在父控件(布局)的对齐方式. 注意: 当Lin ...

  6. layout_gravity 和 gravity以及对应值的详解

    gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...

  7. Android 开发中Layout_Margin与padding的区别以及Layout_gravity与gravity的区别

    Layout_Margin与padding的区别以及Layout_gravity与gravity的区别 平时开发中这几个属性是我们经常使用的几个属性,偶尔脑子一糊涂,就容易弄混这些属性,下面,我就仔细 ...

  8. android 布局中 layout_gravity、gravity、orientation、layout_weight

    线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity (是 ...

  9. layout_gravity 和 gravity

    LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity. 他们的区别在于: android:gravity 属性是对该view中内 ...

最新文章

  1. 生成随机字符串,包含英文和数字,可指定长度
  2. SpringBoot集成flowable-modeler(6.4.1) 实现免登
  3. qt 复制字符串_Qt字符串处理 QString用法总结(一)
  4. 不同类型的官网应该如何设计?
  5. java mdpi_如何使用drawable兼容所有屏幕尺寸(idpi,mdpi,hdpi,xhdpi,xxhdpi)
  6. 前端框架VUE的基础使用
  7. Java练习 SDUT-1294_选票统计
  8. Chrome 87 发布,获多年来最大性能提升
  9. MySQL到mongodb中间件_Bifrost: Bifrost ---- 面向生产环境的 MySQL 同步到Redis,MongoDB等服务的异构中间件...
  10. 社会工程学之《反欺骗的艺术》的思考
  11. android 垂直方向布局,Android详解4种基本布局
  12. win7下桌面IE快捷方式无法删除解决方法
  13. ASP视频教程:SQL语句1
  14. dec是几进制(oct是几进制)
  15. 实验2014052801:动态网页中的动态思想
  16. Writeup-GKCTF-Misc题:Harley Quinn
  17. 初读《设计模式之禅》
  18. 服务器什么系统好用点,服务器用什么系统好
  19. java 将对象写入链表_在Java中,_____类可用于创建链表数据结构的对象。
  20. 获得Windows官方映像(ISO)

热门文章

  1. 三国群英传霸业之王服务器维护,20190723维护公告
  2. 有一种动物叫做 — 狼
  3. Intel+Nvidia双显卡笔记本Linuxmint18下安装CUDA+OpenCV+Caffe的安装记录
  4. Postgresql修改时区
  5. 参加过知了堂成都Java培训后,需要多久能达到年薪十万?
  6. html跳转qq浏览器,javascript,_银联在线支付接口,qq浏览器不能跳转,javascript - phpStudy...
  7. 怎么判断冠词用a还是an_不定冠词a和an有哪些用法
  8. 讯搜全文检索引擎-服务器部署
  9. 国外变电站3d可视化技术发展_变电站3D可视化运维管理!
  10. Unity修改UI的颜色