我想在所有API21及以上的设备上使用Theme.Material,并保持与API21之前设备的兼容性。我遵循了以下指引 此处 并创建了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>
我的问题是我的MainActivity应该扩展什么类。为了在API21之前的设备上工作,我的MainActivity扩展了AppCompatActivity,但是对于API21及以上的设备,我理解我应该扩展Activity(参见 "活动")。是什么原因导致了android异常 "你需要在这个活动中使用一个Theme.AppCompat主题(或子代)"。)...
此外,如果我扩展Activity,我如何设置我的工具栏?我在AppCompatActivity中使用setSupportActionBar。
使用一个 AppCompatActivity
你可以使用相同的类和 一样的风格 所有设备。
在 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>
只需添加一些attrs在 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>