gravity`(控制 View 内部内容的对齐方式)

文章目录

    • **1. 常用取值**
      • **示例**
    • **2. `layout_gravity`(控制 View 在父容器中的对齐方式)**
      • **常用取值**
      • **示例**
    • **3. `gravity` vs `layout_gravity` 对比**
    • **4. 注意事项**
    • **5. 总结**

在这里插入图片描述

作用对象:当前 View 的内部内容(如 TextView 的文本、Button 的文字、LinearLayout 的子控件等)。
适用控件TextViewButtonLinearLayoutRelativeLayout 等几乎所有 View。

1. 常用取值

说明
left / start左对齐(start 适配 RTL 布局)
right / end右对齐(end 适配 RTL 布局)
top顶部对齐
bottom底部对齐
center水平 + 垂直居中
center_horizontal水平居中
center_vertical垂直居中
fill / fill_horizontal / fill_vertical填充(较少使用)

示例

<!-- TextView 的文本居中 -->
<TextViewandroid:layout_width="200dp"android:layout_height="100dp"android:text="Hello World"android:gravity="center" />  <!-- 文本在 TextView 内部居中 --><!-- LinearLayout 的子控件垂直居中 -->
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="200dp"android:gravity="center_vertical">  <!-- 所有子控件垂直居中 --><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 1" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 2" />
</LinearLayout>

2. layout_gravity(控制 View 在父容器中的对齐方式)

作用对象:当前 View 在其父容器 中的位置(如 Button 在 LinearLayout 中的对齐方式)。
适用控件:主要用于 LinearLayoutFrameLayout 的子控件(RelativeLayoutConstraintLayout 一般不用)。

常用取值

说明
left / start靠左(start 适配 RTL)
right / end靠右(end 适配 RTL)
top靠顶部
bottom靠底部
center居中
center_horizontal水平居中
center_vertical垂直居中
fill_horizontal水平填充(拉伸)
fill_vertical垂直填充(拉伸)

示例

<!-- FrameLayout 中的 Button 居中 -->
<FrameLayoutandroid:layout_width="match_parent"android:layout_height="200dp"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Click Me"android:layout_gravity="center" />  <!-- Button 在 FrameLayout 中居中 -->
</FrameLayout><!-- LinearLayout 中的 Button 靠右 -->
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 1" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 2"android:layout_gravity="end" />  <!-- Button 2 靠右 -->
</LinearLayout>

3. gravity vs layout_gravity 对比

属性作用对象适用场景示例
gravity当前 View 的内部内容TextView 文本居中、LinearLayout 子控件对齐android:gravity="center"
layout_gravity当前 View 在其父容器中的位置Button 在 FrameLayout 居中、View 在 LinearLayout 靠右android:layout_gravity="center"

4. 注意事项

  1. layout_gravityLinearLayout 中的限制

    • 如果 LinearLayouthorizontal 方向,layout_gravity 只能控制 垂直方向top/bottom/center_vertical)。
    • 如果 LinearLayoutvertical 方向,layout_gravity 只能控制 水平方向left/right/center_horizontal)。
  2. ConstraintLayout 替代方案

    • ConstraintLayout 一般不使用 layout_gravity,而是用 app:layout_constraintXXX_toXXXOf="parent" 控制位置:

      <Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
      
  3. gravitylayout_gravity 可以组合使用

    <LinearLayoutandroid:layout_width="match_parent"android:layout_height="200dp"android:gravity="center">  <!-- 子控件整体居中 --><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button"android:layout_gravity="end" />  <!-- 但 Button 自己靠右 -->
    </LinearLayout>
    

5. 总结

  • gravity → 控制 当前 View 内部 的对齐(如文本、子控件)。
  • layout_gravity → 控制 当前 View 在父容器 中的对齐(如 Button 在 LinearLayout 中的位置)。
  • LinearLayout 方向影响 layout_gravity 的有效方向
  • ConstraintLayout 用约束替代 layout_gravity

掌握这两个属性可以更灵活地控制 Android 布局! 🚀


在 Android 布局中,layout_weight 是用于 LinearLayout 的一个属性,它允许子视图按照权重(weight)分配剩余空间,常用于实现比例布局(如按比例分配宽度或高度)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go:使用共享变量实现并发

竞态 在串行程序中&#xff0c;步骤执行顺序由程序逻辑决定&#xff1b;而在有多个 goroutine 的并发程序中&#xff0c;不同 goroutine 的事件先后顺序不确定&#xff0c;若无法确定两个事件先后&#xff0c;它们就是并发的。若一个函数在并发调用时能正确工作&#xff0c;称…

Vue3 SSR Serverless架构革命:弹性计算与量子加速

一、全维度Serverless SSR架构 1.1 蜂巢式弹性调度系统 1.2 冷启动时间优化表 优化策略Node.js冷启(ms)Deno冷启(ms)Bun冷启(ms)裸启动1800960420预编译二进制650380210内存快照预热22016090WASM实例池15011075量子状态预载453832 二、边缘渲染协议升级 2.1 流式SSR响应协议…

FPAG IP核调用小练习

一、调用步骤 1、打开Quartus 右上角搜索ROM&#xff0c;如图所示 2、点击后会弹出如图所示 其中文件路径需要选择你自己的 3、点击OK弹出如图所示 图中红色改为12与1024 4、然后一直点NEXT&#xff0c;直到下图 这里要选择后缀为 .mif的文件 5、用C语言生成 .mif文件 //…

Spring Cloud 服务间调用深度解析

前言 在构建微服务架构时&#xff0c;服务间的高效通信是至关重要的。Spring Cloud 提供了一套完整的解决方案来实现服务间的调用、负载均衡、服务发现等功能。本文将深入探讨 Spring Cloud 中服务之间的调用机制&#xff0c;并通过源码片段和 Mermaid 图表帮助读者更好地理解…

AF3 generate_chain_data_cache脚本解读

AlphaFold3 generate_chain_data_cache 脚本在源代码的scripts文件夹下。该脚本从指定目录中批量解析 mmCIF/PDB 文件的工具,并将每个链的基本信息(序列、分辨率、是否属于聚类等)提取并写入 JSON 文件,主要用于后续蛋白质建模、过滤或训练数据准备。 源代码: import ar…

vue项目打包部署到maven仓库

需要的资源文件&#xff0c;都放在根目录下&#xff1a; 1. versionInfo.js const fs require(fs) const path require(path) const mkdirp require(mkdirp) const spawn require(child_process).spawnconst packageObj require(./package.json) const versionNo packa…

MegaTTS3: 下一代高效语音合成技术,重塑AI语音的自然与个性化

在近期的发布中&#xff0c;浙江大学赵洲教授团队与字节跳动联合推出了革命性的第三代语音合成模型——MegaTTS3&#xff0c;该模型不仅在多个专业评测中展现了卓越的性能&#xff0c;还为AI语音的自然性和个性化开辟了新的篇章。 MegaTTS3技术亮点 零样本语音合成 MegaTTS3采用…

【教程】PyTorch多机多卡分布式训练的参数说明 | 附通用启动脚本

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 torchrun 一、什么是 torchrun 二、torchrun 的核心参数讲解 三、torchrun 会自动设置的环境变量 四、torchrun 启动过程举例 机器 A&#…

计算机视觉——基于 Yolov8 目标检测与 OpenCV 光流实现目标追踪

1. 概述 目标检测&#xff08;Object Detection&#xff09;和目标追踪&#xff08;Object Tracking&#xff09;是计算机视觉中的两个关键技术&#xff0c;它们在多种实际应用场景中发挥着重要作用。 目标检测指的是在静态图像或视频帧中识别出特定类别的目标对象&#xff0…

MySQL——流程控制

一、IF条件语句 语法 IF condition THENstatements; ELSEIF condition THENstatements; ELSEstatements; END IF; 判断成绩等级 # 判断成绩等级 # 输入学生的编号,取出学生的第一门课&#xff0c;然后判断当前的课程的等级 drop procedure if exists p2; delimiter $$ crea…

C# + Python混合开发实战:优势互补构建高效应用

文章目录 前言&#x1f94f;一、典型应用场景1. 桌面应用智能化2. 服务端性能优化3. 自动化运维工具 二、四大技术实现方案方案1&#xff1a;进程调用&#xff08;推荐指数&#xff1a;★★★★☆&#xff09;方案2&#xff1a;嵌入Python解释器&#xff08;推荐指数&#xff1…

MLflow 入门

官方主页 MLflow | MLflow官方文档 MLflow: A Tool for Managing the Machine Learning Lifecycle | MLflow 0. 简介 MLflow 是一个开源平台&#xff0c;专门为了帮助机器学习的从业者和团队处理机器学习过程中的复杂性而设计。MLflow 关注机器学习项目的完整生命周期&#x…

【蓝桥杯选拔赛真题101】Scratch吐丝的蜘蛛 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch吐丝的蜘蛛 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 四、程序编写 五、考点分析 六、推荐资料 1、scratch资料 2、python资料 3、C++资料 scratch吐丝的蜘蛛 第十五届青少年蓝桥杯s…

智谱最新模型GLM4是如何练成的

写在前面 这篇博客将基于《ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools》,深入剖析 GLM-4 系列在**模型架构设计、预训练、后训练(对齐)、以及关键技术创新(如长上下文处理、Agent 能力构建)**等环节的实现逻辑与设计考量,带你全面了…

第二届电气技术与自动化工程国际学术会议 (ETAE 2025)

重要信息 2025年4月25-27日 中国广州 官网: http://www.icetae.com/ 部分 征稿主题 Track 1&#xff1a;电气工程 输配电、电磁兼容、高电压和绝缘技术、电气工程、电气测量、电力电子及其应用、机电一体化、电路与系统、电能质量和电磁兼容性、电力系统及其自…

设备调试--反思与总结

最近回顾项目&#xff0c; 发现&#xff1a;在调试过程中最耽误时间的可能不是技术难度&#xff0c;而是惯性思维&#xff1b; 例如&#xff1a; 我写can通信滤波器的时候&#xff0c;可能是不过滤的&#xff1b;是接收所有的id报文&#xff0c;然后用业务逻辑过滤&#xff08…

C++项目:高并发内存池_下

目录 8. thread cache回收内存 9. central cache回收内存 10. page cache回收内存 11. 大于256KB的内存申请和释放 11.1 申请 11.2 释放 12. 使用定长内存池脱离使用new 13. 释放对象时优化成不传对象大小 14. 多线程环境下对比malloc测试 15. 调试和复杂问题的调试技…

深度学习入门:神经网络的学习

目录 1 从数据中学习1.1 数据驱动1.2 训练数据和测试数据 2损失函数2.1 均方误差2.2 交叉熵误差2.3 mini-batch学习2.4 mini-batch版交叉熵误差的实现2.5 为何要设定损失函数 3 数值微分3.1 数值微分3.3 偏导数 4 梯度4.1 梯度法4.2 神经网络的梯度 5 学习算法的实现5.1 2层神经…

【第45节】windows程序的其他反调试手段上篇

目录 引言 一、通过窗口类名和窗口名判断 二、检测调试器进程 三、父进程是否是Explorer 四、RDTSC/GetTickCount时间敏感程序段 五、StartupInfo结构的使用 六、使用BeingDebugged字段 七、 PEB.NtGlobalFlag,Heap.HeapFlags,Heap.ForceFlags 八、DebugPort:CheckRem…

Golang|select

文章目录 多路监听超时控制 多路监听 如果selcet外面没有for循环&#xff0c;则只会监听一次&#xff0c;要实现一直监听的话要加for循环但是如果要设置退出条件的话&#xff0c;break语句只会退出这个select而不会退出for循环 select也可以有default&#xff0c;用于不用等cha…