0

我想爲API21及更高版本的所有設備使用Theme.Material,並保持與API21之前設備的兼容性。我遵循解釋here的指導原則並創建了2個Style.xml。 這一個API21及以上 將Theme.Material用於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及以上我明白我應該延伸活動(參見What causes android exception "You need to use a Theme.AppCompat theme (or descendant) with this activity.")...

如果我延長活動如何設置我的工具欄?我在AppCompatActivity中使用setSupportActionBar。

回答

0

使用的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> 

就在values-v21/styles.xml添加一些ATTRS(不要求):

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

我明白,主題android:Theme.Material(http://developer.android.com/ training/material/theme.html)目前尚未廣泛使用。爲了兼容性目的,最好使用AppCompat,AppCompat提供Theme.Material的所有功能。 – arover

+0

是的。 AppCompat包裝api <21的材質主題,並將材質主題用於api21 +。 –