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

第二章 Android常见界面布局

📘 第二章:Android 常见界面布局

在 Android 中,界面布局(Layout) 决定了应用中各个界面元素(View)如何在屏幕上排列。
掌握布局,是 Android UI 开发的基础。


一、View 与 Layout 基本概念

1️⃣ View(视图)
  • 所有界面元素的基类

  • 常见的 View:

    • TextView(文本)

    • EditText(输入框)

    • Button(按钮)

    • ImageView(图片)

    • CheckBoxRadioButton 等。

👉 每个 View 都是一个矩形区域,可以响应用户事件(点击、滑动等)

2️⃣ ViewGroup(视图组)
  • 是 View 的子类,但作用是 容纳和管理其他 View(或 ViewGroup)

  • 常见的 ViewGroup 就是各种 布局(Layout)

例如:

LinearLayout、RelativeLayout、FrameLayout、ConstraintLayout


二、界面布局的编写方式

Android 提供两种布局定义方式:

编写方式特点
XML 布局文件常用、直观,可视化编辑。位于 res/layout/ 目录。
Java / Kotlin 代码动态生成灵活,适合运行时动态创建 UI。
✅ 示例:XML 方式(推荐)
<!-- res/layout/activity_main.xml -->
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:text="Hello Android!"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>
✅ 示例:Java 方式
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);TextView textView = new TextView(this);
textView.setText("Hello Android!");
layout.addView(textView);setContentView(layout);

三、布局的通用属性

属性含义
android:id控件唯一标识,用于 Java 代码引用。
android:layout_width / android:layout_height控件的宽高,可取 match_parentwrap_content、具体数值。
android:layout_margin控件与外部的间距。
android:padding控件内部内容与边框的间距。
android:background背景颜色或图片。
android:gravity控件内部内容的对齐方式。
android:layout_gravity控件在父布局中的对齐方式。

四、常见布局类型

1️⃣ LinearLayout(线性布局)

水平(horizontal)垂直(vertical) 方向顺序排列子控件。

<LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextView android:text="用户名:" /><EditText android:hint="请输入用户名" />
</LinearLayout>

📌 特点:

  • 按方向依次排列。

  • 可使用 android:weight 分配剩余空间。


2️⃣ RelativeLayout(相对布局)

子控件之间 通过相对位置关系 来定位。

<RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv_name"android:text="姓名:"android:layout_alignParentStart="true"/><EditTextandroid:layout_toEndOf="@id/tv_name"android:hint="请输入姓名"/>
</RelativeLayout>

📌 特点:

  • 控件间可使用属性如:

    • layout_belowlayout_abovelayout_toRightOflayout_alignParentTop

  • 比 LinearLayout 更灵活,但复杂布局管理困难。


3️⃣ TableLayout(表格布局)

行(TableRow)为单位 组织控件,类似 HTML 表格。

<TableLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><TableRow><TextView android:text="账号:" /><EditText android:hint="输入账号" /></TableRow><TableRow><TextView android:text="密码:" /><EditText android:hint="输入密码" /></TableRow>
</TableLayout>

📌 特点:

  • 每一行使用 <TableRow> 包裹。

  • 适合表格或登录界面。

  • 自动对齐列宽。


4️⃣ FrameLayout(帧布局)

所有子控件 叠放在一起(后面的覆盖前面的)

<FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:src="@drawable/bg"android:layout_width="match_parent"android:layout_height="match_parent"/><TextViewandroid:text="覆盖文字"android:layout_gravity="center"/>
</FrameLayout>

📌 特点:

  • 后添加的控件显示在上层。

  • 常用于重叠布局,如图片 + 文字叠加效果。


5️⃣ ConstraintLayout(约束布局)

Android Studio 推荐的 现代主流布局,通过 约束(Constraint) 实现复杂排版。

<androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv_title"android:text="标题"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toStartOf="parent"/><Buttonandroid:text="确定"app:layout_constraintTop_toBottomOf="@id/tv_title"app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

📌 特点:

  • 性能高、层级少(避免嵌套)。

  • 可实现复杂界面。

  • 通过拖拽设计器直观布局。

  • 推荐取代 RelativeLayout。


五、布局选择建议

场景推荐布局
简单上下排列LinearLayout(vertical)
相对位置控制RelativeLayout
登录表单TableLayout
图片叠加文字FrameLayout
复杂界面、性能优先ConstraintLayout

六、布局嵌套与优化

  • 嵌套太多会影响性能(测量和绘制开销大)。

  • 推荐使用:

    • ConstraintLayout(减少嵌套)

    • merge、include 标签 复用布局。

示例:

<include layout="@layout/item_user" />


✅ 小结

名称排列方式优点缺点
LinearLayout线性排列简单易用嵌套多时效率低
RelativeLayout相对定位灵活层级复杂
TableLayout表格排列整齐对齐不适合复杂 UI
FrameLayout叠加布局可实现覆盖效果控件多时难控制
ConstraintLayout约束布局性能高、功能强学习曲线稍高
http://www.dtcms.com/a/607200.html

相关文章:

  • HCIP-IoT/H52-111 真题详解(章节C),接入技术和网络设计 /Part2
  • Vue 项目实战《尚医通》,完成登录业务,笔记27
  • 深圳手机报价网站网站建设需要用软件
  • 平顶山市做网站高端网站建设个人
  • 考前速记 名词解释+简答题
  • 儿童 网站欣赏wordpress添加微信公众号
  • php网站建设招聘萧江做网站
  • ARM交叉编译中编译与链接参数不一致导致的问题
  • 哈尔滨市城乡和建设局网站恶意镜像网站程序
  • 分销网站制作条件网站开发标书怎么写
  • Dubbo 与 Spring Cloud Alibaba 整合实战
  • 石家庄个人建网站网站开发与维护都有些什么
  • 自建站公司中国对外贸易网站
  • C语言编译器网页版在线 | 轻松编写与运行C语言程序
  • 开封到濮阳旺道网站排名优化
  • 网站设计风格确认书网站制作 网页显示不全
  • 网站没完成可以备案么化妆品品牌网站建设
  • 个人网站备注模板优秀网站设计欣赏
  • 企业网络 VLAN 隔离与防火墙互联:实验全解析与实战指南
  • 点击消除
  • .NET驾驭Excel之力:单元格与区域操作详解
  • 桂林seo哪家好在线网站优化
  • 徐州html5响应式网站建设思创医惠网站建设
  • 电子商务网站开发费用调研报告合肥商城网站开发
  • JDBC 学习
  • 网站设计书的结构wordpress数据插件
  • 建站系统破解源码大数据营销的特点
  • 企业网络资产暴露面识别方法论
  • 借刘润之智,在 IP+AI 时代构筑战略 “增长方舟”|创客匠人
  • 大学生网站设计大作业seo网站优化推广怎么做