Android appcompat主题始终显示黑色操作栏

时间:2015-02-20 13:02:01

标签: android android-actionbar android-appcompat

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

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

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

我的value.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,并尝试了一些建议,但都是徒劳的。

请帮忙。提前致谢。

4 个答案:

答案 0 :(得分:4)

使用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

答案 1 :(得分:0)

在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>

关于drawables xml:

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

活动工具栏为蓝色(#6189C5),使用API​​ 21进行编译

完成this答案中的信息(如Apurva任命)

答案 2 :(得分:0)

您是否已尝试更改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(..);

答案 3 :(得分:0)

<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"