在android布局中,我们经常会用到“重心”-gravity这个属性。但是gravity有不同的类型:

  • gravity
  • layout_gravity
  • 相对布局中的layout_center等属性

今天我们就来具体说说。

1、gravity

gravity属性是对控件自身内容对自己的限定,拿布局文件test.xml举例来说:

此时在TextView中并没有对gravity属性进行操作,文字内容如上图。接下来,我们继续设置TextView的gravity属性,观察效果:

2、layout_gravity属性

与gravity属性不同的是,layout_gravity属性是用来设置该View相对与父View的位置,具体情况就个人判断有下面这4种情况:

另外还有一种在父布局横或纵设置wrap_content时,如果在该方向设置layout_gravity属性。我直接在一个布局中,把这5种情况列出来,下面是我的布局文件代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.primexiao.myapplication.MainActivity">
//第4种情况
<LinearLayout
    android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#00f0f0"android:orientation="vertical"><TextView
            android:id="@+id/tv1"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是测试内容"android:background="#000000"android:layout_gravity="center_horizontal"android:textColor="#ffffff"android:layout_width="100dp"android:layout_height="100dp" />
</LinearLayout>
//第1种情况<LinearLayout
        android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#00ff00"android:orientation="vertical"><TextView
            android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是测试内容"android:background="#000000"android:textColor="#ffffff"android:layout_gravity="center_vertical"android:layout_width="100dp"android:layout_height="100dp" /></LinearLayout>//第3种情况<LinearLayout
        android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#00f0f0"android:orientation="horizontal"><TextView
            android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是测试内容"android:background="#000000"android:layout_gravity="center_vertical"android:textColor="#ffffff"android:layout_width="100dp"android:layout_height="100dp" /></LinearLayout>//第2种情况<LinearLayout
        android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#ff0000"android:orientation="horizontal"><TextView
            android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是测试内容"android:background="#000000"android:layout_gravity="center_horizontal"android:textColor="#ffffff"android:layout_width="100dp"android:layout_height="100dp" /></LinearLayout>//第5种情况<LinearLayout
        android:layout_width="wrap_content"android:layout_height="0dp"android:layout_weight="1"android:background="#fff000"android:orientation="horizontal"><TextView
            android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是测试内容"android:background="#000000"android:layout_gravity="center_horizontal"android:textColor="#ffffff"android:layout_width="100dp"android:layout_height="100dp" /></LinearLayout>
</LinearLayout>

效果图如下:

我们可以看到第1和第2种情况下,layout_gravity这一属性根本没有起到作用,个人看法是子控件如果选择横或纵居中,这种属性声明是不能和父布局的排列方式相冲的,这个坑我先替你们踩着:D。

3、相对布局中的layout_center属性

之前遇到过这么一个问题,在RelativeLayout中设置layount_gravity属性,发现并不能实现居中效果,并且layout_gravity也是手动输入,期间并没有智能提示。后来发现相对布局中,有layout_centerX这么一个属性,让我们来试一下:

待续。

如果觉得这篇文章对你有帮助的话,欢迎顶+评论:D

详解Android布局中gravity与layout_gravity属性相关推荐

  1. Android布局中gravity、layout_gravity与layout_centerHorizontal属性区别介绍

    gravity使用区分 gravity:控制控件内文字的对齐方式,LinearLayout.RelativeLayout均生效 gravity是设置自身内部元素的对齐方式.比如一个TextView,则 ...

  2. android系统加载主题的流程,详解Android布局加载流程源码

    一.首先看布局层次 看这么几张图 我们会发现DecorView里面包裹的内容可能会随着不同的情况而变化,但是在Decor之前的层次关系都是固定的.即Activity包裹PhoneWindow,Phon ...

  3. html子布局不超出父布局,详解flex布局中保持内容不超出容器的解决办法

    在移动端,flex 布局很好用,它能够根据设备宽度来自动调整容器的宽度,用起来很方便,已经越来越离不开它,但是最近在做项目的时候发现一个问题. 就是在一个设置了 flex:1 的容器中,如果文字很长, ...

  4. android:stretchcolumns=quot;*quot;,详解Android TableLayout中stretchColumns、shrinkColumns的用法...

    详解Android 中TableLayout中stretchColumns.shrinkColumns的用法 android:stretchColumns="1" android: ...

  5. android include 控件详解,Android开发中include控件用法分析

    本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面 ...

  6. 详解android framework中StateMachine(HSM层次状态机)的实现

    [转载文章出处:https://segmentfault.com/a/1190000020386485?utm_source=tag-newest 作者:emonn] [最近在看状态机相关的问题,看到 ...

  7. Android布局中涉及的一些属性

    Android:gravity属性 线性布局常见的就是利用LinearLayout进行布局,其中有个比较重要的属性就是android:gravity,在官方文档中是这么描述这个属性的:指定一个元素怎么 ...

  8. <Android>布局中gravity和layout_gravity区别

    概念 1.android:layout_gravity是设置该控件相对于父容器对齐方式: 2.android:gravity是设置子元素在该容器内的对齐方式.(若其下没有子元素,此项无效:若父子产生冲 ...

  9. android布局优化 工具,详解Android布局优化

    怎样才能写出优秀的Android App,是每一个程序员追求的目标.那么怎么才能写出一个优秀的App呢?相信很多初学者也会有这种迷茫.一句话来回答这个问题:细节很重要.今天我们就从最基础的XML布局来 ...

最新文章

  1. java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...
  2. 一个小需求,能够做到月活跃用户5000万,就是真牛逼!
  3. Redis6.0新版本开始引入多线程,到底改善了什么
  4. 推荐算法-聚类-DBSCAN
  5. VTK:PolyData之ImplicitDataSetClipping
  6. MySQL性能的五大配置参数(内存参数)
  7. 单片机产生可调方波(c语言),单片机产生占空比可调方波(PWM)
  8. 从头编写 asp.net core 2.0 web api 基础框架 (2)
  9. Gartner:2020年全球IaaS公有云服务市场增长40.7%
  10. 信息学奥赛一本通(1098:质因数分解)
  11. 多线程爬取图片 -Java
  12. 计算机命令指示符大全,常用CMD命令提示符大全:让你玩转Win7系统“运行命令”!...
  13. Java冒泡排序法 经典例题
  14. 【webrtc 桌面采集】DXGI 流程
  15. linux 查看任务管理器,LINUX查看进程的4种方法(小结)
  16. 美区苹果id绑定QQ邮箱教程
  17. 数字基本单位及2或10的幂次方
  18. Python 编程辅助工具--ipython
  19. memtester --转载
  20. 反汇编代码分析--函数调用

热门文章

  1. 算法训练 - 阿尔法乘积 计算一个整数的阿尔法乘积。对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿 尔法乘积就等于它的各位非0
  2. 华为机考108题(c++)(41-51)
  3. 数风流人物还看今朝|前后端分离微服务项目常用中间件以及指令
  4. 数学之路(3)-数据分析(5)
  5. 上海计算机考试分值,2019年上海中考总分是多少 考试科目及分值
  6. 找规律题(面试+练脑子)
  7. js获取用户选择的文件路径[曲线救国]
  8. 微软全球副总裁李开复给中国青年的一封信
  9. POJ 1511:Invitation Cards
  10. buuctf blacklist