把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_alignParentToplayout_centerInParent
  • 相对于其他控件layout_abovelayout_belowlayout_toLeftOf
  • 对齐属性layout_alignToplayout_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

相关推荐
郑州光合科技余经理8 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
andyweike13 小时前
Android Automotive
android
又见情义13 小时前
记一次 RK3568 Android 13 蓝牙反复重启问题的排查与修复
android
hai_android13 小时前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
敲代码的瓦龙15 小时前
Jetpack?ViewModel!!!
android·开发语言·kotlin·android-studio
Godikov15 小时前
Android 工控终端实战:从秒级卡顿到毫秒响应,SQLite/LitePal 性能优化全记录
android
星间都市山脉17 小时前
Android16 SystemService.onBootPhase 调用时机
android·java·linux·windows·ubuntu
swithun17 小时前
不用 WebView,我用 Kotlin + Compose Multiplatform 重写 Mermaid,并做了 2048 组对拍
android·开源·kotlin
AI吃大瓜18 小时前
人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测)
android·yolo·人脸检测·人体检测·行人检测·yolo26
与海boy18 小时前
Prompt模版
android·prompt