簡體   English   中英

使用Theme.AppCompat的黑暗操作欄

[英]dark action bar with Theme.AppCompat

我正在為我的應用程序使用Theme.AppCompat ,以獲得深色外觀。 一切看起來都不錯,除了使用該主題的操作欄看起來很古老,即它有一個明亮的藍色底部分隔線。

我希望操作欄看起來像在Theme.AppCompat.Light.DarkActionBar

看着themes.xml ,我發現:

<style name="Theme.AppCompat.Light.DarkActionBar"
       parent="Theme.Base.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">true</item>
</style>


<style name="Theme.Base.AppCompat.Light.DarkActionBar" parent="Theme.Base.AppCompat.Light">
    <item name="actionBarDivider">@drawable/appcompat_divider_dark</item>
</style>

所以我創建自己的樣式,如下所示:

<style name="myTheme" parent="@style/Theme.AppCompat">
    <item name="actionBarDivider">@drawable/appcompat_divider_dark</item>
</style>

但我得到構建錯誤:

No resource found that matches the given name (at 'actionBarDivider' with value 
 '@drawable/appcompat_divider_dark')

為什么我不能使用框架使用的同一個drawable?

藍線是用於操作欄的背景圖像的一部分。 例如,您可以在sdk/platforms/android-19/data/res/drawable-xxhdpi/ab_transparent_dark_holo.9.png

訣竅是通過繼承Widget.AppCompat.ActionBar來創建自己的Widget樣式,並使用所需的png(沒有藍線)設置background屬性。 我使用支持庫的現有@drawable/abc_ab_bottom_transparent_dark_holo 您可以在sdk/extras/android/support/v7/appcompat/res/drawable-hdpi/文件夾中找到它。

因此,在styles.xml文件中創建以下元素。

<style name="myActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="android:background">@drawable/abc_ab_bottom_transparent_dark_holo</item>
</style>

然后在您的主題中包含這個新創建的樣式(已經存在於styles.xml文件中):

<style name="AppBaseTheme" parent="@style/Theme.AppCompat">
        <item name="android:actionBarStyle">@style/myActionBar</item>
</style>

要在舊版API中啟用此更改,請對所有3個文件夾values-v14values-v12values進行相同的更改。 需要注意的重要一件事是,不應將“ android:”命名空間用於values-v12values文件夾中的名稱屬性。

暫無
暫無

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

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