Skip to content

Most visited

Recently visited

navigation

维护兼容性

有些 Material Design 功能(例如材料主题和定制操作行为转换)仅在 Android 5.0(API 级别 21)及更高版本中提供。 不过,您可为您的应用进行设计,使应用在支持 Material Design 的设备上运行时可使用这些功能,且同时能够与运行早期版本 Android 的设备兼容。

定义备用样式

您可对您的应用进行配置,使应用能够在支持它的设备上使用材料主题,并且能够在运行早期版本 Android 的设备上还原至早期版本的主题:

  1. 定义一个从 res/values/styles.xml 中的早期版本主题(例如 Holo)继承的主题。
  2. 定义一个从 res/values-v21/styles.xml 中的材料主题继承且拥有相同名称的主题。
  3. 在清单文件中将此主题设置为您的应用主题。

注意:如果您的应用使用材料主题,但没有以这方式提供备用主题,您的应用将无法在 Android 5.0 之前的 Android 版本上运行。

提供备用布局

如果您根据 Material Design 指导方针设计的布局没有使用 Android 5.0(API 级别 21)所推出的新 XML 属性,这些布局将能够在早期版本的 Android 上运行。 或者,您也可以提供备用布局。您也可以提供备用布局以定制应用在早期版本的 Android 上的呈现方式。

您可在 res/layout-v21/ 内创建用于 Android 5.0(API 级别 21)的布局文件,同时也可在 res/layout/ 内创建用于早期版本 Android 的备用布局文件。例如,res/layout/my_activity.xmlres/layout-v21/my_activity.xml 的备用布局。

为避免代码重复,请在 res/values/ 内定义您的风格,在 res/values-v21/ 内为新 API 修改风格,以及使用风格继承(即:在 res/values/ 内定义基础风格,然后在 res/values-v21/ 内继承这些风格)。

使用支持内容库

v7 支持内容库 r21 及更高版本包括下列 Material Design 功能:

系统小组件

Theme.AppCompat 主题可为这些小组件提供 Material Design 风格:

配色工具

如果要利用 Android v7 支持内容库取得 Material Design 风格以及定制配色工具,请应用其中一个 Theme.AppCompat 主题:

<!-- extend one of the Theme.AppCompat themes -->
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
    <!-- customize the color palette -->
    <item name="colorPrimary">@color/material_blue_500</item>
    <item name="colorPrimaryDark">@color/material_blue_700</item>
    <item name="colorAccent">@color/material_green_A200</item>
</style>

列表和卡片

RecyclerView 以及 CardView 小组件可通过 Android v7 支持内容库提供给早期版本 Android,但有如下限制:

依赖项

如果要在 Android 5.0(API 级别 21)之前的 Android 版本中使用这些功能,请将 Android v7 支持内容库作为 Gradle 依赖项包括在您的项目中:

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.+'
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
}

检查系统版本

下列功能仅在 Android 5.0(API 级别 21)及更高版本中提供:

如果要保留与早期版本 Android 的兼容性,请您在运行时检查系统 version,然后再为下列的任何一个功能调用 API:

// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // Call some material design APIs here
} else {
    // Implement this feature without material design
}

注意:如果要指定您的应用所支持的 Android 版本,请使用您的清单文件中的 android:minSdkVersion 以及 android:targetSdkVersion 属性。 如果要在 Android 5.0 内使用 Material Design 功能,请将 android:targetSdkVersion 属性设置为 21。 如果要了解更多信息,请参阅 <uses-sdk> API 指南

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)