【问题标题】:Android appcompat theme always shows black color actionbarAndroid appcompat 主题始终显示黑色操作栏
【发布时间】:2015-04-22 04:05:46
【问题描述】:

我使用这个非常常见的基于网络的工具生成了动作栏样式 http://jgilfelt.github.io/android-actionbarstylegenerator/

我在我的工作区中将“android-support-v7-appcompat”作为一个单独的项目。我将通过从该工具下载 zip 文件生成的 res 文件夹的所有内容转储到该项目中。

我为操作栏和上下文菜单(弹出)使用了一种深蓝色。 但是,我无法从这个主题中实现自定义外观。大多数元素/组件显示默认外观。 操作栏是黑色(而不是蓝色),弹出菜单是灰色(而不是浅蓝色)

值文件夹中的我的 style.xml

<style name="Theme.dinemobileandro" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarItemBackground">@drawable/selectable_background_dinemobileandro</item>
    <item name="popupMenuStyle">@style/PopupMenu.dinemobileandro</item>
    <item name="dropDownListViewStyle">@style/DropDownListView.dinemobileandro</item>
    <item name="actionBarTabStyle">@style/ActionBarTabStyle.dinemobileandro</item>
    <item name="actionDropDownStyle">@style/DropDownNav.dinemobileandro</item>
    <item name="actionBarStyle">@style/ActionBar.Solid.dinemobileandro</item>
    <item name="actionModeBackground">@drawable/cab_background_top_dinemobileandro</item>
    <item name="actionModeSplitBackground">@drawable/cab_background_bottom_dinemobileandro</item>
    <item name="actionModeCloseButtonStyle">@style/ActionButton.CloseMode.dinemobileandro</item>

            <!-- Light.DarkActionBar specific -->
    <item name="actionBarWidgetTheme">@style/Theme.dinemobileandro.Widget</item>

</style>

我也在清单文件中进行了必要的更改

  <application
   android:name="com.railyatri.in.mobile.MainApplication"
   android:allowBackup="true"
   android:allowClearUserData="true"
   android:enabled="true"
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/Theme.dinemobileandro" >

我已密切遵循此博客中提到的步骤,并且之前它对我来说适用于 sherlock 主题。 http://java.dzone.com/articles/creating-custom-android-styles 但是,这一次,我迁移到 appcompat 并且它停止了工作。我已经通过 SO 和 Google 搜索了很多,并尝试了一些建议的东西,但都是徒劳的。

请帮忙。提前致谢。

【问题讨论】:

  • 希望对您有所帮助stackoverflow.com/questions/8024706/…
  • 感谢@Apurva,但它没有用。我也在做同样的事情。这里几乎走到了死胡同。
  • 哪个版本的 ppcompat ?
  • @GabrieleMariotti,我正在使用 appcompat V21 和 android -support -v7- appcompat。感谢您的关注
  • 我不明白你是把工具里的res文件夹的内容转储到库appcompat-v7的res文件夹还是自己项目的res文件夹。

标签: android android-actionbar android-appcompat


【解决方案1】:

在 Android 清单上:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@style/Theme.dinemobileandro" >

关于样式 xml:

<style name="Theme.dinemobileandro" parent="AppTheme">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar"
       parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@drawable/blue</item>
<item name="background">@drawable/blue</item>

关于可绘制 xml:

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
    <drawable name="blue">#6189C5</drawable>
</resources>

Activity 上的工具栏是蓝色的 (#6189C5) 使用 API 21 编译

完成this 答案中的信息(如 Apurva 指定)

【讨论】:

  • 谢谢@Javier。我试过了,但它把整个应用程序改成了那种颜色。全身都是蓝色的。我只是希望操作栏是蓝色的。
  • 再次感谢。试过你说的但没有用。该应用程序恢复到原来的样子。蓝色没有生效。黑色操作栏和灰色上下文菜单。
  • @user1006072 @javier 建议的答案是我的答案。如果您的所有活动都用蓝色操作栏更改,那么您必须将自定义主题放在manifest 文件的&lt;application&gt; 标记中。仅将android:theme="@styles/custom_theme" 放在要更改操作栏颜色的&lt;activity&gt; 标记中。你说你的溢出菜单仍然有 grey 颜色,那么你必须用 api level 21 编译你的应用程序。Android 已经停止支持溢出菜单颜色在 api 21 中使用此解决方案。
  • @Apurva,我没有在应用程序级别应用它。我将它应用于活动本身。然而,它仍然把整个活动变成了蓝色。
  • @user1006072 不,它不能使整个活动变成蓝色,你一定是犯了任何错误。你看到我的回答了吗?我已经尝试过很多次了,它无法将蓝色应用于您的活动。
【解决方案2】:

您是否已经尝试更改您的 Java 文件? 像这样的:

    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.ic_launcher);
    getSupportActionBar().setTitle(Html.fromHtml("<font color=\"grey\">" + getString(R.string.app_name) + "</font>"));
    getSupportActionBar().setBackgroundDrawable(..);

【讨论】:

  • 不,我没有。会试一试,让你知道。但是,当我使用 Sherlock Action Bar 时,我不必这样做。我也没有找到任何我提到的要求我更改 Java 文件的博客/教程。
【解决方案3】:

AppCompat v21 不推荐使用 actionbarstylegenerator。

您可以使用类似这样的东西来自定义 ActionBar(或者更好的是 Toolbar)。

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
    <!-- Set AppCompat's color theming attrs -->
    <item name="colorPrimary">@color/my_color</item>
    <item name="colorPrimaryDark">@color/my_darkercolor</item>
    
</style>

您可以在官方博客中找到更多信息: http://android-developers.blogspot.it/2014/10/appcompat-v21-material-design-for-pre.html

【讨论】:

  • 感谢@Gabriele Mariotti,我最终搬到了 ToolBar,但我希望我有办法使用操作栏,因为我已经对它更舒服了。我没有遇到工具栏的多个问题,例如工具栏的高度太大,我无法减少。应用程序图标也显示得太大,并且油炸面包块显示在工具栏上方,也被剪掉了。我猜,这只是一项大型研究活动
【解决方案4】:
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">

    <item name="colorPrimary">@color/my_actionbar_color</item>
    <item name="colorPrimaryDark">@color/my_actionbar_dark_color</item>

    <!-- if you need customization -->
    <item name="actionBarStyle">@style/MyActionBarStyle</item>
</style>

记得使用

parent="Theme.AppCompat.Light"

不是

parent="@style/Theme.AppCompat.Light"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多