android - 带有 Theme.AppCompat 的深色操作栏

标签 android android-source android-theme

我正在为我的应用程序使用 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')

为什么我不能使用框架正在使用的同一个可绘制对象?

最佳答案

蓝线是用于操作栏的背景图像的一部分。例如,您可以在以下位置找到它:sdk/platforms/android-19/data/res/drawable-xxhdpi/ab_transparent_dark_holo.9.png

诀窍是通过继承 Widget.AppCompat.ActionBar 创建您自己的 Widget 样式,并使用您想要的 png 设置背景属性,它没有蓝线。我使用支持库现有的@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 文件夹中的名称属性。

关于android - 带有 Theme.AppCompat 的深色操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24695378/

相关文章:

android-source - Android 网页浏览器的源代码在哪里?

android - AlertDialog 样式 - 如何更改标题、消息等的样式(颜色)

java - 如何从图库中选择多张图片?

android - 使用 Google Drive Android API 将数据附加到文件

android-source - Android AOSP 仅快速重建 system.img

android - 当 SystemUI 在 Android Boot 中加载时

android - 微调器未显示正确数据

android - KeyBoard 隐藏 EditText

android - 有没有办法改变菜单项图标和文本的颜色?

android - 如何设置 toast 样式为主题?