两种对齐方式,layout_gravity和gravity大不同
时间:2022-04-26
本文章向大家介绍两种对齐方式,layout_gravity和gravity大不同,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上一期我们一起学习了LinearLayout线性布局的方向、填充模型和权重,本期来一起学习LinearLayout线性布局的对齐。
一、LinearLayout对齐
gravity控制组件的重心,也叫对齐方式,表示view横向和纵向的停靠位置。主要通过以下两个属性来控制。
- android:gravity:是对view组件本身来说的,是用来设置组件本身的内容应该显示在组件的什么位置,默认值是左侧。
- android:layout_gravity:是相对于包含该元素的父元素来说的,设置该元素在父元素的什么位置。
其属性值主要有以下几种:
- top:将对象放在其容器的顶部,不改变其大小。
- bottom:将对象放在其容器的底部,不改变其大小。
- left:将对象放在其容器的左侧,不改变其大小。
- right:将对象放在其容器的右侧,不改变其大小。
- center_vertical:将对象纵向居中,不改变其大小。垂直对齐方式:垂直方向上居中对齐。
- fill_vertical:必要的时候增加对象的纵向大小,以完全充满其容器。垂直方向填充。
- center_horizontal:将对象横向居中,不改变其大小。水平对齐方式:水平方向上居中对齐。
- fill_horizontal:必要的时候增加对象的横向大小,以完全充满其容器。水平方向填充。
- center:将对象横纵居中,不改变其大小。
- fill:必要的时候增加对象的横纵向大小,以完全充满其容器。
- clip_vertical:附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容。剪切基于其纵向对齐设置:顶部对齐时剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部。垂直方向裁剪。
- clip_horizontal:附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容。剪切基于其横向对齐设置:左侧对齐时剪切右侧;右侧对齐时剪切左侧;除此之外剪切左侧和右侧。水平方向裁剪。
二、android:gravity
接下来通过一个简单的示例程序来学习android:gravity的使用用法。
继续使用app/main/res/layout/目录下的activity_main.xml文件,在其中填充如下代码片段:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="top"
android:gravity="top"
android:textColor="#ffffff"
android:background="#ff0000" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="bottom"
android:gravity="bottom"
android:textColor="#ffffff"
android:background="#0000ff" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="left"
android:gravity="left"
android:textColor="#ffffff"
android:background="#ff0000" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="right"
android:gravity="right"
android:textColor="#ffffff"
android:background="#0000ff" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="center_vertical"
android:gravity="center_vertical"
android:textColor="#ffffff"
android:background="#ff0000" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="fill_vertical"
android:gravity="fill_vertical"
android:textColor="#ffffff"
android:background="#0000ff" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="center_horizontal"
android:gravity="center_horizontal"
android:textColor="#ffffff"
android:background="#ff0000" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="fill_horizontal"
android:gravity="fill_horizontal"
android:textColor="#ffffff"
android:background="#0000ff" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="center"
android:gravity="center"
android:textColor="#ffffff"
android:background="#ff0000" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="fill"
android:gravity="fill"
android:textColor="#ffffff"
android:background="#0000ff" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="clip_vertical"
android:gravity="clip_vertical"
android:textColor="#ffffff"
android:background="#ff0000" />
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="clip_horizontal"
android:gravity="clip_horizontal"
android:textColor="#ffffff"
android:background="#0000ff" />
</LinearLayout>
运行程序,可以看到下图所示界面效果:
三、android:layout_gravity
接下来通过一个简单的示例程序来学习android:layout_gravity的使用用法。
将上面的示例程序的布局文件修改一下,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 水平左右对齐 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#ff0000">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="left"
android:background="#ffffff"
android:layout_gravity="left" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="center_horizontal"
android:background="#ffffff"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="right"
android:background="#ffffff"
android:layout_gravity="right" />
</LinearLayout>
<!-- 垂直上下对齐 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:background="#0000ff">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="top"
android:background="#ffffff"
android:layout_gravity="top" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="center_vertical"
android:background="#ffffff"
android:layout_gravity="center_vertical" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bottom"
android:background="#ffffff"
android:layout_gravity="bottom" />
</LinearLayout>
<!-- 整体居中对齐 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:background="#ff0000">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="center"
android:background="#ffffff"
android:layout_gravity="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="vertical"
android:background="#0000ff">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="center"
android:background="#ffffff"
android:layout_gravity="center" />
</LinearLayout>
</LinearLayout>
重新运行程序,可以看到下图所示界面效果:
从上面两个示例可以发现android:layout_gravity和android:gravity两个属性的差别,一定要理解透彻。
- C++课程设计类作业3
- [快学Python3]INI文件读写
- 【专知-PyTorch手把手深度学习教程08】NLP-PyTorch: 用字符级RNN生成名字
- Codeforces Round #415 (Div. 2)(A,暴力,B,贪心,排序)
- BZOJ 2456: mode(新生必做的水题)
- 【专知-PyTorch手把手深度学习教程07】NLP-基于字符级RNN的姓名分类
- Codeforces Round #301 (Div. 2)(A,【模拟】B,【贪心构造】C,【DFS】)
- 【专知-PyTorch手把手深度学习教程06】NLP-Word Embedding快速理解与PyTorch实现: 图文+代码
- [linux][memory]memcmp几种实现和性能对比
- 蒙特卡洛算法及其实现
- 【专知-PyTorch手把手深度学习教程05】Dropout快速理解与PyTorch实现: 图文+代码
- 【专知-PyTorch手把手深度学习教程04】GAN快速理解与PyTorch实现: 图文+代码
- 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)
- 【专知中秋呈献-PyTorch手把手深度学习教程03】LSTM快速理解与PyTorch实现: 图文+代码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android RIL使用详解
- 详解Android aidl的使用方法
- Android 进度条自动前进效果的实现代码
- Android 系统服务TelecomService启动过程原理分析
- Android圆角头像工具类详解
- Android实现系统消息推送
- Android仿微信QQ聊天顶起输入法不顶起标题栏的问题
- Android实现倒计时的按钮效果
- 腾讯位置服务实现轨迹回放
- 有一种遗憾,是跑程序却没用上_______
- Android使用注解代替枚举节省系统内存开销的方法
- Android实现自定义验证码输入框效果(实例代码)
- flutter 实现多布局列表的示例代码
- flutter TextField换行自适应的实现
- 如何造个android Flow流式响应的轮子