何时使用 AppCompatView 与普通 Android 视图

When to use an AppCompatView vs a normal Android view

使用它们有什么区别,什么时候应该使用它们?

AppCompatView 的文档示例是:

A tint aware EditText. This will automatically be used when you use EditText in your layouts. You should only need to manually use this class when writing custom views

为什么 AppCompatView 只能用于自定义视图?

有一个 ,但我正在寻找一个很好的解释来解释为什么 AppCompatView 应该只用于自定义视图。

某些 material 设计功能,例如 material 主题和自定义 activity 过渡仅在 Android 5.0(API 级别 21)及更高版本上可用.但是,当 运行在支持 material 设计的设备上使用这些功能时,您可以设计您的应用程序以利用这些功能,并且仍然与 运行ning 以前版本的 Android 设备兼容.

问题-> 为什么 AppCompatView 应该只用于自定义视图。

回答 -> 简单来说,AppCompatView 用于 maintaining compatibility。如果您的应用与 Theme.Material 一样使用 Material 主题但不提供替代主题,则您的应用将不会 运行 在早于 5.0 的 Android 版本上。

如果您根据 material 设计指南设计的布局不使用 Android 5.0 中引入的任何新 XML 属性(API 级别 21 ),它们将适用于 Android 的早期版本。否则,您可以提供替代布局。您还可以提供替代布局来自定义您的应用程序在早期版本 Android.

上的外观

向后兼容 material 设计 Android 应用程序使用 AppCompat 更容易,特别是当您了解其样式和主题如何协同工作以动态着色用户界面时。

使用 AppCompat,您应该花更少的时间摆弄资产和向后兼容性,而将更多时间专注于实际构建您的应用程序。

目前,通过 Android Studio 创建的新项目默认包含此库。

注意:此库依赖于 v4 支持库。

下面是一些参考链接

  1. Android Material Themes Made Easy With AppCompat
  2. Migrating to the AppCompat Library
  3. Getting Material Design for Pre-Lollipop Devices with AppCompat v21

在您的布局中,您应该使用 "normal" 视图,因为支持库会自动注入兼容性代码。 支持库提供的 类 只有在编写新的自定义视图时才需要。在这种情况下,您必须扩展 AppCompat 视图才能获得新属性(例如色调)。