对 API21 及更高版本使用 Theme.Material,并在 Activity 中与工具栏保持兼容性

Use Theme.Material for API21 and above and maintaining compatibility in an Activity with a Toolbar

我想对所有 API21 及更高版本的设备使用 Theme.Material,并保持与 API21 之前的设备的兼容性。我遵循 here 解释的指南并创建了 2 Style.xml。 API21及以上版本

<style name="AppTheme" parent="android:Theme.Material">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="colorPrimary">@color/USMABlue</item>
    <item name="colorPrimaryDark">@color/USMABlueDark</item>

    <!-- Customize your theme here. -->
</style>

这一款适用于 API21 之前的设备

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/USMABlue</item>
    <item name="colorPrimaryDark">@color/USMABlueDark</item>
    <item name="colorAccent">@color/USMAAccent</item>

    <!-- Customize your theme here. -->
</style>

我的问题是 class 我的 MainActivity 应该扩展什么。 要使用 API21 之前的设备,我的 MainActivity 扩展了 AppCompatActivity 但是对于 API21 及更高版本的设备,我知道我应该扩展 Activity(参见 )...

此外,如果我扩展 Activity 我该如何设置我的工具栏?我在 AppCompatActivity.

中使用 setSupportActionBar

使用 AppCompatActivity 您可以对所有设备使用相同的 class 和 相同的样式

values/styles.xml

<style name="Base.AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/USMABlue</item>
    <item name="colorPrimaryDark">@color/USMABlueDark</item>
    <item name="colorAccent">@color/USMAAccent</item>

    <!-- Customize your theme here. -->
</style>

<style name="AppTheme" parent="Base.AppTheme">
</style>

只需在values-v21/styles.xml中添加一些属性(不是必需的):

<style name="AppTheme" parent="Base.AppTheme">
   <item name="android:windowDrawsSystemBarBackgrounds">true</item>
   <item name="android:statusBarColor">@android:color/transparent</item>
</style>