为什么API级别19中的材料主题没有中断?

时间:2017-12-22 18:58:07

标签: android android-activity

我最近开始学习Android编程。我了解到Android从Android API 21开始支持Material Theme。

昨天,我用一个活动创建了一个小型测试应用程序。该活动扩展了Activity类。最小SDK为19,目标SDK为27,编译SDK为27。

现在我将主题更改为Material.Dialog并在Android 27设备中运行该应用程序。它按预期完美地运作。

但是,我试图在Android 19设备上运行它,我预计它不会运行。但它运行没有错误。当然,它没有正确呈现Material.Dialog主题;它使它像常规的黑暗主题。该应用程序功能齐全。

让我感到惊讶。如果在低于21的API上运行,为什么使用Material Theme的应用程序不会中断? API级别21不是物质主题的硬性要求吗?

另外,我了解到Android是向后兼容的(为较旧的API设计的程序可以在较新的API上运行。)它是否也向前兼容?

build.gradle依赖项部分如下所示:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

API 19的Android模拟器的屏幕截图如下所示: http://8-bit.nl/ag-admin/import.php?action=node

1 个答案:

答案 0 :(得分:0)

幸运的是,我与我的一位同事交谈,他回答了我的问题。以下是简短的对话历史记录:

  

我的同事:主题只影响应用的外观和感觉。因此,如果在API 19设备上加载应用程序,预计该应用程序将继续运行但无法正常显示。

     

我:谢谢。我没有使用支持库来更好地理解Android兼容性。       因此,基于您的答案,从技术上讲,即使在API 10,我的应用程序也应该正常运行。对吗? (但不能正确呈现。)

     

我的同事:是的,应该

因此,虽然https://developer.android.com/training/material/theme.html表示"材料主题仅适用于Android 5.0(API级别21)及更高版本。",但不应将其解释为&# 34;如果一个应用程序使用了材料主题,那么它将无法在低于21的API级别工作并且打破#34;它应解释为"它可能无法在低于21的API级别正确呈现,但仍能正常运行。"