TextView、AppCompatTextView和MaterialTextView该用哪一个?Android UI 组件发展史与演进对照表

在 Android 开发中,UI 组件一直在不断演进,从最初的原生组件,到 Support Library(AppCompat 兼容库),再到如今的 Material Design 组件。这篇文章将梳理 Android UI 组件的发展历史,并提供详细的对照表,帮助开发者选择合适的 UI 组件。


时间线:Android UI 组件的发展

1. 原生 UI 组件(Android 1.0 ~ 4.x 时代)

  • 时间:2008 年(Android 1.0 发布)~ 2013 年(Android 4.4 时代)
  • 特性
    • 最初的 Android 版本提供了基础 UI 组件,比如 ButtonTextViewEditText 等。
    • 这些控件依赖于系统,导致在不同版本的 Android 设备上可能存在行为、外观不一致的问题。
    • 在 Android 3.0(Honeycomb,2011 年)开始引入 ActionBar,但这个组件在 Android 2.x 版本中无法使用。

2. Support Library(Android 4.x ~ 9 时代)

  • 时间:2011 年(Android 3.0 时代)~ 2018 年(Android 9)

  • Support Library(支持库)

    • 为了解决不同 Android 版本的兼容性问题,Google 在 Android 3.0(Honeycomb)后推出了 Support Library,方便开发者在旧版本系统上使用新特性。
    • 主要版本:
      • v4(Android 1.6+):提供 Fragment、ViewPager、LoaderManager 等功能,支持最早的 Android 1.6。
      • v7 (Android 2.1+):提供 AppCompat 组件,比如 AppCompatActivityAppCompatButton,让开发者能在旧版本 Android 设备上使用 Toolbar、Material Design 主题等。
      • v13 (Android 3.2+):主要用于增强 Fragment 相关功能,较少使用。
      • v17、v19(API 级别更高的支持库):提供 UI 适配、TV 设备支持等功能。
  • AppCompat 组件的出现(2014 年)

    • Android 5.0(Lollipop,2014)引入了 Material Design,但老版本(Android 4.x)无法直接使用这些新特性。
    • Google 在 Support Library v7 中引入了 AppCompat 组件(如 AppCompatButtonAppCompatTextView),这样就能让 Android 4.x 设备也能使用 Material 主题和组件。

3. Material Design 组件库(Android 5.0 ~ 现今)

  • 时间:2014 年(Android 5.0 发布)~ 现在

  • Material Design 1.0(2014 年)

    • Android 5.0(Lollipop)推出了 Material Design 设计语言,系统 UI 组件也进行了大幅升级,比如 Button 变成了 MaterialButton,并且提供了 CardViewCoordinatorLayout 等新组件。
    • 这些 Material 组件最早是在 android.support.design 包下,作为 Support Library v7 的一部分。
  • Material Components for Android(2018 年)

    • 2018 年,Google 推出了独立的 Material Components for AndroidMDC-Android ),并放入 com.google.android.material 命名空间。
    • 这个库是对原生 Material Design 组件的增强版,提供 MaterialButtonMaterialCardViewTextInputLayout 等更丰富的 UI 控件,同时支持动态主题、暗色模式等功能。

4. AndroidX 时代(2018 年至今)

  • 时间:2018 年至今

  • 为什么出现 AndroidX?

    • Support Library(v4、v7 等)名称混乱,不容易管理。
    • 许多 API 过时,Google 需要重新整理,提供更稳定的支持。
    • Android 9(API 28)之后,Google 推出了 AndroidX,并彻底废弃了 Support Library
  • AndroidX 变化

    • android.support.v7.widget.AppCompatButtonandroidx.appcompat.widget.AppCompatButton
    • android.support.design.widget.TextInputLayoutcom.google.android.material.textfield.TextInputLayout
    • android.support.v4.app.Fragmentandroidx.fragment.app.Fragment
    • android.support.v7.app.AppCompatActivityandroidx.appcompat.app.AppCompatActivity

    AndroidX 之后,所有的新特性都会在 AndroidX 维护,旧的 Support Library 不再更新。


总结:如何选择 UI 组件

控件类型 适用场景 示例
原生控件ButtonTextView 不关心 UI 统一性,也不需要 Material Design android.widget.Button
AppCompat 控件AppCompatButtonAppCompatTextView 需要兼容旧设备,确保 UI 在不同版本 Android 中一致 androidx.appcompat.widget.AppCompatButton
Material Design 控件MaterialButtonTextInputLayout 使用 Material Design 主题,追求现代 UI 体验 com.google.android.material.button.MaterialButton

当然,下面是一张更完整的对照表,列出了 原生控件(Android 1.0) → Support Library 组件(AppCompat v7) → Material Design 组件(MDC-Android) 的演进过程,并附带控件的主要功能。


Android UI 组件演进对照表

原生控件(Android 1.0+) AppCompat 控件(Support Library v7) Material 组件(Material Design 1.0+) 主要功能
TextView AppCompatTextView MaterialTextView 文字显示,支持样式、行间距等
Button AppCompatButton MaterialButton 按钮,支持波纹效果、图标等
ImageButton AppCompatImageButton MaterialButton(带图标) 图片按钮,支持点击效果
EditText AppCompatEditText TextInputEditText 输入框,支持输入文本、密码等
TextInputLayout 输入框容器,支持浮动标签、错误提示等
CheckBox AppCompatCheckBox MaterialCheckBox 复选框,支持多选
RadioButton AppCompatRadioButton MaterialRadioButton 单选按钮
Switch AppCompatSwitch MaterialSwitch 开关按钮
ToggleButton AppCompatToggleButton (推荐使用 MaterialSwitch 早期的开关按钮,已逐步被 Switch 取代
SeekBar AppCompatSeekBar Slider 进度条
ProgressBar AppCompatProgressBar CircularProgressIndicatorLinearProgressIndicator 进度指示器,支持线性或圆形
Spinner AppCompatSpinner ExposedDropdownMenu 下拉选择框(Material 版更现代)
ListView AppCompatListView RecyclerView 列表控件(RecyclerView 性能更强)
ScrollView AppCompatScrollView NestedScrollView 滚动视图
ViewPager ViewPager2 ViewPager2 多页面滑动视图
Toolbar AppCompatToolbar MaterialToolbar 顶部导航栏
FrameLayout FrameLayout MaterialCardView 用于自定义布局,可增加阴影
CardView(Support Library v7) CardView MaterialCardView 卡片视图,支持阴影、圆角
TabHost TabLayout TabLayout 选项卡布局
NavigationView(Support Library v7) NavigationView NavigationView 侧边导航栏
DrawerLayout DrawerLayout DrawerLayout 抽屉式侧滑菜单
FloatingActionButton(Support Library v7) FloatingActionButton FloatingActionButton 悬浮按钮
CoordinatorLayout CoordinatorLayout CoordinatorLayout 高级布局容器,支持滚动行为
Snackbar(Support Library v7) Snackbar Snackbar 替代 Toast 的提示条
BottomAppBar 底部工具栏
BottomNavigationView 底部导航栏
PopupMenu PopupMenu MaterialPopupMenu 弹出菜单
AlertDialog AppCompatDialog MaterialAlertDialog 弹框,Material 版更美观
DatePickerDialogTimePickerDialog AppCompatDatePickerDialog MaterialDatePickerMaterialTimePicker 日期和时间选择器
Chip(Support Library v7) Chip Chip 轻量级标签,类似于按钮
RecyclerView(Support Library v7) RecyclerView RecyclerView 替代 ListView,更高效的列表控件

选择指南

  1. 如果你是 AndroidX 时代(2018+)的项目

    • 优先选择 Material 组件 (如 MaterialButtonMaterialCardView),可以获得更现代的设计和更强的定制能力。
    • RecyclerView 替代 ListView ,推荐 ViewPager2 而不是 ViewPager
  2. 如果你需要兼容 Android 4.x ~ 9 设备

    • 使用 AppCompat 组件 (如 AppCompatButtonAppCompatEditText)以保证外观和功能一致性。
  3. 如果你是 Android 10+(API 29 以上)

    • 直接使用 Material 组件,因为 AppCompat 组件的作用已经逐渐被 Material 组件取代。
  4. 什么时候使用原生组件?

    • 只在不关心 UI 兼容性、不需要 Material Design 时(比如一些性能要求极高的场景)。
相关推荐
UI设计兰亭妙微13 分钟前
能源监控软件UI界面设计:平衡功能性与审美性的艺术
ui·能源
yzpyzp3 小时前
MutableList 和 ArrayList 区别
android·kotlin
CYRUS_STUDIO3 小时前
Android 自定义变形 MD5 算法
android·算法·安全
雨声不在5 小时前
手动集成sqlite的方法
android·sqlite
niuTaylor7 小时前
Photoshop基础操作全解析
ui·photoshop
南梦也要学习7 小时前
计算机二级MS之Excel
android·excel
二流小码农8 小时前
鸿蒙开发:远场通信服务rcp拦截器问题
android·ios·harmonyos
所以经济危机就是没有新技术拉动增长了9 小时前
Android 和 Linux 之间关联和区别
android·linux·运维
laohei711 小时前
五分钟快速了解MVI、MVVM、MVP
android