把android资源类型详解

一、Android 主要资源类型

类型 目录
动画 anim/
属性动画 animator/
颜色 color/、values/colors.xml
图片/形状 drawable/
布局 layout/
菜单 menu/
字符串 values/strings.xml
样式/主题 values/styles.xml
尺寸 values/dimens.xml
数组 values/arrays.xml
字体 font/
原始文件 raw/
任意XML xml/

二、四种常用布局资源

布局 特点 适用场景
LinearLayout 水平/垂直线性排列 简单列表、表单
RelativeLayout 相对定位(相对于父容器或其他控件) 中等复杂度的相对布局
FrameLayout 堆叠,默认左上角 Fragment容器、叠加效果
ConstraintLayout 约束定位,扁平化,性能好 复杂布局,替代多层嵌套

1、LinearLayout(线性布局)

核心特点

  • 子视图按水平 或垂直方向线性排列
  • 支持权重(weight) 分配剩余空间

关键属性

属性 说明
orientation horizontal(水平)/ vertical(垂直)
layout_weight 权重值,按比例分配剩余空间
gravity 子视图在布局中的对齐方式
layout_gravity 自身在父布局中的对齐方式

示例

xml

ini 复制代码
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="标题" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="按钮" />

</LinearLayout>

适用场景 :简单列表、表单页面
注意事项:嵌套过深会影响性能,建议控制层级


2. RelativeLayout(相对布局)

核心特点:通过相对关系定位(相对于父容器或其他控件),布局扁平。

关键属性:

  • 相对于父容器 :layout_alignParentTop、layout_centerInParent 等
  • 相对于其他控件 :layout_above、layout_below、layout_toLeftOf 等
  • 对齐属性 :layout_alignTop、layout_alignBottom 等

示例代码:

xml

ini 复制代码
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="标题" />

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:layout_centerHorizontal="true"
        android:text="确定" />

</RelativeLayout>

适用场景 :中等复杂度的相对定位布局
注意事项 :需要为参照控件设置 id


3、FrameLayout(帧布局)

核心特点

  • 子视图默认堆叠在左上角
  • 后添加的覆盖先添加的
  • 结构简单,通常只放一个子视图

关键属性

属性 说明
foreground 前景图片,始终在最上层
foregroundGravity 前景图片对齐方式
layout_gravity 子视图在容器中的位置

示例

xml

ini 复制代码
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/bg" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="加载中" />

</FrameLayout>

适用场景

  • Fragment 容器
  • 叠加层(进度条、遮罩)
  • 单个子视图的简单布局

4、ConstraintLayout(约束布局)

核心特点

  • 通过约束定义位置关系
  • 扁平化设计,避免多层嵌套
  • Google 官方推荐的主流布局

关键属性

属性 说明
layout_constraintLeft_toLeftOf 左边与目标左边对齐
layout_constraintLeft_toRightOf 左边位于目标右边
layout_constraintTop_toBottomOf 顶部位于目标底部
layout_constraintBottom_toTopOf 底部位于目标顶部
layout_constraintStart_toEndOf 推荐使用,支持 RTL
layout_constraintHorizontal_bias 水平偏向(0~1)
layout_constraintWidth_percent 宽度百分比

示例

xml

ini 复制代码
<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="标题"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/content"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@id/title"
        app:layout_constraintBottom_toBottomOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

适用场景 :复杂布局、替代多层嵌套
注意事项 :需要添加依赖 androidx.constraintlayout:constraintlayout

相关推荐
Dovis(誓平步青云)9 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码10 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程11 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程14 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程15 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程15 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程16 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓16 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程16 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer
supabc12316 小时前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium