簡體   English   中英

AppCompatActivity是否未將colorPrimary用於操作欄?

[英]AppCompatActivity not using colorPrimary for Action Bar?

https://developer.android.com/training/material/theme.htmlcolorPrimary應設置操作欄的顏色。

當我的mainActivity擴展Activity ,此方法有效,但是當我擴展AppCompatActivity (或現已棄用的ActionBarActivity )時,它會中斷。

因此,對於AppCompatActivity我必須使用:

values/style.xml

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimaryDark">@color/MaterialTeal800</item>
    <item name="colorPrimary">@color/MaterialTeal500</item>
    <!--<item name="colorPrimaryLight">@color/MaterialLightPrimary</item>-->
    <!--<item name="colorDivider">@color/MaterialDivider</item>-->
    <item name="colorAccent">@color/MaterialDeepOrange500</item>
    <!--<item name="colorAccentPressed">@color/MaterialDeepOrange800</item>-->
</style>
<style name="AppTheme" parent="AppBaseTheme">
    <!-- Customize your theme here. -->
    <item name="android:textColor">@color/black</item>
    <item name="android:textColorSecondary">@color/MaterialSecondary</item>
    <item name="android:textColorPrimary">@color/black</item>
    <item name="actionBarTabTextStyle">@style/TitleText</item>
</style>
<style name="TitleText" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:textColor">@color/white</item>
</style>

可以為狀態欄正確着色,但不能為操作欄着色。

並且(對於v21,無論如何)適用於Activity

 <style name="AppBaseTheme" parent="android:Theme.Material.Light.DarkActionBar">
    <!-- android:Theme.Material.Light.DarkActionBar -->
    <!-- Theme.AppCompat.Light.DarkActionBar -->
    <item name="android:colorPrimaryDark">@color/MaterialTeal800</item>
    <item name="android:colorPrimary">@color/MaterialTeal500</item>
    <!--<item name="android:colorPrimaryLight">@color/MaterialLightPrimary</item>-->
    <item name="android:textColor">@color/black</item>
    <item name="android:actionBarTabTextStyle">@style/TitleText</item>
    <item name="android:textColorSecondary">@color/MaterialSecondary</item>
    <!--<item name="android:colorDivider">@color/MaterialDivider</item>-->
    <item name="android:textColorPrimary">@color/black</item>
    <item name="android:colorAccent">@color/MaterialDeepOrange500</item>
</style>

如果我不使用Activity而是使用AppCompatActivity ,它將在啟動時崩潰,並顯示:

java.lang.IllegalStateException:您需要在此活動中使用Theme.AppCompat主題(或后代)。

我想與AppCompatActivity一起運行,以實現兼容性,但是我不知道為什么它沒有選擇顏色(但是同一代碼對Activity很有效-我很想使用所有較新的選項在API 21+上)。 它選擇了狀態欄似乎是錯誤的,但是我需要在操作欄上手動覆蓋自定義樣式(a-la 這個答案 )。 我會堅持選擇嗎? 沒有實質性主題或過渡或向后兼容性?

請注意,這不是工具欄。 這是操作欄-我知道我可以在添加的工具欄元素上使用android:background

更新

看起來我可以通過刪除v21 android:名稱空間來使操作欄與AppCompatActivity一起着色,但是如果我嘗試使用真實的材質主題,仍然會崩潰。

在這里,您應該刪除android:應用程序兼容性主題的前綴:

<item name="colorPrimaryDark">@color/MaterialTeal800</item>

和樣式-v21

<item name="android:colorPrimaryDark">@color/MaterialTeal800</item>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM