2017-03-01 67 views
1

我正在努力正确覆盖默认主题应用程序栏颜色。 当我使用android:actionBarStyle时,它会更改颜色,但标题文本丢失。更改应用程序栏背景颜色

<resources> 
    <style name="ToolbarThemeStyle" parent="android:Theme.Material.Light"> 
    <item name="android:actionBarStyle">@style/ActionBarTitle.Background</item> 
    </style> 
    <style name="ActionBarTitle.Background" parent=""> 
    <item name="android:background">#8DC44E</item> 
    <item name="android:titleTextStyle">@style/ActionBarTitle.Text</item> 
    </style> 
    <style name="ActionBarTitle.Text" parent=""> 
    <item name="android:textColor">#FFFFFF</item> 
    </style> 
</resources> 

我试过Replacing the Action Bar但我想知道是否没有更简单更简单的方法。

清单:

<application android:label="Home Automation" android:icon="@mipmap/ic_launcher" android:theme="@android:style/Theme.Material.Light"  
    </application> 

活动:

[Activity(Label = "Label", MainLauncher = false, Theme = "@style/ToolbarThemeStyle", NoHistory =true)] 
+0

的ActionBar动作条最大值; actionBar = getSupportActionBar(); actionBar.setBackgroundDrawable(R.drawable.alert_vehicle); –

+0

使用这个drawable创建定制的xml布局 –

+0

看看这个链接,你一定会知道你的问题 –

回答

0

确保你在menifest或XML设置主题活动。在这里,我分享了我可以参考的主题代码。

<style name="MaterialAppTheme" parent="Theme.AppCompat.Light"> 
     <!-- colorPrimary is used for the default action bar background --> 
     <item name="colorPrimary">@color/white</item> 
     <item name="android:textColorSecondary">@color/red</item> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 
+0

我的默认主题是在Manifest中。我通过将活动主题设置为XML来覆盖应用程序栏。你的代码给出了错误:找不到与给定名称匹配的资源:attr'colorPrimary' – Jnr

+0

@Jnr我阅读了你的评论。这是正确的,它编译你已经声明的SDK。它应该被安装。 – vishal

0

此代码应该是在你style.xml

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 
    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

</resources> 

并确保您应该的manifest.xml宣布它

<application 
     android:name=".app.AppController" 
     android:allowBackup="true" 
     android:icon="@drawable/images" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
+0

请参阅我的更新。我在@vishal答案的评论中得到了同样的错误。 – Jnr

+0

请贴上你的错误让我看看它,你没有粘贴相同的代码,我已经在答案中给出 –

+0

我想你必须看看这个链接 –

1

感谢所有您的答复。我想我会自己回答这个问题,而我花了几个小时试图弄清楚这一点。

显而易见的解决方案是this page下使用自定义主题,但我得到的错误“没有资源的发现,给定的名称匹配(安卓基色)”。更改android:minSDKVersion=23也没有工作。

我去应用程序属性,并设置到当前定位框架“使用Android版本编译”(即API 23),而不是将其未安装尚未设置为API 25.