使用 AppCompat 套件時,若直接套用傳統 android:actionBarStyle 往往無效,因為 Support Library 的 ActionBar 實作為 Toolbar,需透過 Theme 屬性 actionBarStyle(不帶 android 前綴)並指向 Widget.AppCompat.ActionBar 衍生樣式。
Theme.AppCompat.Light.DarkActionBar。actionBarStyle 指向自訂 ActionBar 樣式。Widget.AppCompat.ActionBar.Solid,覆寫 titleTextStyle、icon、background 等屬性。<activity> 或 <application> 套用該 Theme。<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="Widget.AppCompat.ActionBar.Solid">
<item name="titleTextStyle">@style/MyTitleText</item>
<item name="icon">@drawable/ic_custom</item>
<item name="background">@color/colorPrimary</item>
</style>
<style name="MyTitleText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textSize">20sp</item>
<item name="android:textColor">@android:color/white</item>
</style>
此行為由 actionButtonStyle 或 actionOverflowButtonStyle 控制。確保 Theme 繼承自 Theme.AppCompat 且未強制設定 android:actionMenuPresenter。若仍異常,檢查 toolbar 布局中 app:popupTheme 是否正確指向 ThemeOverlay.AppCompat.Light。
| 屬性名稱 | 適用範圍 |
|---|---|
android:actionBarStyle | 原生 ActionBar (API 11+) |
actionBarStyle | Support Library Toolbar/ActionBar |
務必使用不帶 android: 前綴的屬性,才能在 AppCompat 環境生效。