[英]AppCompatActivity remove action bar elevation/shadow with style
[英]AppCompatActivity not using colorPrimary for Action Bar?
據https://developer.android.com/training/material/theme.html , colorPrimary
應設置操作欄的顏色。
當我的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.