layout_gravity和gravity的区分和应用
关于它两的使用和区别可以参考文章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的区分和应用相关推荐
- android:layout_gravity=end,Android中 layout_gravity和gravity的区别
前言:gravity是设置自身内部元素的对齐方式. 一.比如一个TextView,则是设置内部文字的对齐方式.如果是ViewGroup组件如LinearLayout的话,则为设置它内部view组件的对 ...
- Android零基础入门第26节:layout_gravity和gravity大不同
Android零基础入门第26节:layout_gravity和gravity大不同 原文:Android零基础入门第26节:layout_gravity和gravity大不同 上一期我们一起学习了L ...
- 方向gravity_两种对齐方式,layout_gravity和gravity大不同
原标题:两种对齐方式,layout_gravity和gravity大不同 上一期我们一起学习了LinearLayout线性布局的方向.填充模型和权重,本期来一起学习LinearLayout线性布局的对 ...
- android:layout_gravity=quot;topquot;,android:layout_gravity和gravity的区别
文章转自http://blog.csdn.net/shakespeare001/article/details/784346,给出了很详细的解释. 1.首先来看看Android:layout_grav ...
- android layout_gravity center,android: layout_gravity与gravity区别及动态设置
1. layout_gravity与gravity区别: gravity:是用来指定文字在控件中的对齐方式. layout_gravity:是用来指定控件在父控件(布局)的对齐方式. 注意: 当Lin ...
- layout_gravity 和 gravity以及对应值的详解
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...
- Android 开发中Layout_Margin与padding的区别以及Layout_gravity与gravity的区别
Layout_Margin与padding的区别以及Layout_gravity与gravity的区别 平时开发中这几个属性是我们经常使用的几个属性,偶尔脑子一糊涂,就容易弄混这些属性,下面,我就仔细 ...
- android 布局中 layout_gravity、gravity、orientation、layout_weight
线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity (是 ...
- layout_gravity 和 gravity
LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity. 他们的区别在于: android:gravity 属性是对该view中内 ...
最新文章
- 生成随机字符串,包含英文和数字,可指定长度
- SpringBoot集成flowable-modeler(6.4.1) 实现免登
- qt 复制字符串_Qt字符串处理 QString用法总结(一)
- 不同类型的官网应该如何设计?
- java mdpi_如何使用drawable兼容所有屏幕尺寸(idpi,mdpi,hdpi,xhdpi,xxhdpi)
- 前端框架VUE的基础使用
- Java练习 SDUT-1294_选票统计
- Chrome 87 发布,获多年来最大性能提升
- MySQL到mongodb中间件_Bifrost: Bifrost ---- 面向生产环境的 MySQL 同步到Redis,MongoDB等服务的异构中间件...
- 社会工程学之《反欺骗的艺术》的思考
- android 垂直方向布局,Android详解4种基本布局
- win7下桌面IE快捷方式无法删除解决方法
- ASP视频教程:SQL语句1
- dec是几进制(oct是几进制)
- 实验2014052801:动态网页中的动态思想
- Writeup-GKCTF-Misc题:Harley Quinn
- 初读《设计模式之禅》
- 服务器什么系统好用点,服务器用什么系统好
- java 将对象写入链表_在Java中,_____类可用于创建链表数据结构的对象。
- 获得Windows官方映像(ISO)
热门文章
- 三国群英传霸业之王服务器维护,20190723维护公告
- 有一种动物叫做 — 狼
- Intel+Nvidia双显卡笔记本Linuxmint18下安装CUDA+OpenCV+Caffe的安装记录
- Postgresql修改时区
- 参加过知了堂成都Java培训后,需要多久能达到年薪十万?
- html跳转qq浏览器,javascript,_银联在线支付接口,qq浏览器不能跳转,javascript - phpStudy...
- 怎么判断冠词用a还是an_不定冠词a和an有哪些用法
- 讯搜全文检索引擎-服务器部署
- 国外变电站3d可视化技术发展_变电站3D可视化运维管理!
- Unity修改UI的颜色