当前位置: 首页 > news >正文

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)分配剩余空间,常用于实现比例布局(如按比例分配宽度或高度)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • Hikyuu C++与Python层交互机制
  • Vue 3中的setup【与Vue 2的区别】
  • 深度学习--深度学习概念、框架以及构造
  • GIT工具学习【1】:新安装git预操作
  • candence17.4原理图编号
  • 你了解哪些Java限流算法?
  • 深入解析操作系统的文件系统:从存储介质到数据管理的核心引擎
  • 猿辅导集团推首个教育AI范式小猿AI 聚焦家校应用场景发布3款新品
  • VGA显示
  • 【euclid】10.2 2D变换模块(transform2d.rs)Arbitrary trait
  • 蓝桥杯嵌入式十六届赛前复习总结与准备
  • linux运维篇-Ubuntu(debian)系操作系统创建源仓库
  • 基本元器件—电阻器(2025.4.14)
  • 实现表单验证
  • YOLOv2 快速入门与核心概念:更快、更准的目标检测利器
  • tap交换机配置步骤
  • 详解最大公约数做法
  • 数据结构作业
  • vue2中基于el-select封装一个懒加载下拉框
  • 从源码到实战:深度解析`rsync`增量同步机制与高级应用
  • “中国电三之都”江苏丰县成功举办第十五届电动车展览会
  • 两大跨国巨头称霸GLP-1市场,国产减肥药的机会在哪?
  • 一季度全社会用电量同比增长2.5%,3月增速显著回升
  • 北京将严查大数据杀熟和强制搭售等五种网络销售违法行为
  • 专访|易彬谈《幻想底尽头:穆旦传》:首先是“幻想”,然后才是“尽头”
  • 云南景洪回应“游客打车遭临时加价并拒载”:对司机顶格罚款500元并停运学习