2015-11-13 270 views
16

我正在开发一个应用程序,我想要change the textcolor of the actionbar title。现在,我定义我的表现一个主题:Android - 更改操作栏标题文字颜色

<application 
     android:theme="@style/AppTheme"> 
</application> 

这是在styles.xml定义:

<style name="AppTheme" parent="android:style/Theme.Holo.Light"> 
     <item name="android:textViewStyle">@style/AppTheme.TextView</item> 
     <item name="android:actionBarStyle">@style/AppTheme.ActionBarStyle</item> 
    </style> 

    <style name="AppTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item> 
    </style> 

    <style name="AppTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
     <item name="android:textColor">@color/themeapp</item> 
    </style> 

    <style name="AppTheme.TextView" parent="@android:style/Widget.TextView"> 
     <item name="android:textColor">#FFFFFF</item> 
    </style> 

,这并不工作,但我不知道为什么。这应该根据this answer工作。无论textview样式是否工作。

我做错了什么?

UPDATE: 改为符合以下

+0

你有一个答案了吗? –

+0

不是不幸的 –

回答

0

文本颜色StackOverflow的周围游荡,我发现this answer这最后的工作。

我这里举报:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
    ... 
</style> 

<style name="ActionBar" parent="@android:style/Widget.ActionBar"> 
    <item name="android:titleTextStyle">@style/ActionBar.Title</item> 
    <item name="android:subtitleTextStyle">@style/ActionBar.Subtitle</item> 
    ... 
</style> 

<style name="ActionBar.Title"> 
    <item name="android:textColor">@color/my_color</item> 
</style> 

<style name="ActionBar.Subtitle"> 
    <item name="android:textColor">@color/my_color</item> 
</style> 
+2

我跟着这个例子设置@ color/my_color为#000000,我的文本在操作栏内仍然是白色的。 – James

+0

actionBar背景和文字颜色都变成了白色。 – Mohammed

7
<style name="AppTheme" parent="android:style/Theme.Holo.Light"> 

<style name="AppTheme.TextView" parent="android:Widget.TextView"> 

你错过了一个符号 “@” 这里恩凤答案吗?

<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 

<style name="AppTheme.TextView" parent="@android:Widget.TextView"> 
+1

哦,这是尴尬。无论如何,这是行不通的,动作栏标题仍然是白色的,textviews保持黑色 –

4

你可以找到如何定制ActionBarhere。我建议使用ToolBarTheme.AppCompat而不是 - example

0

我认为这只是你活动的问题。我使用了和你一样的代码,它工作。 enter image description here

首先,我使用AppCompatActivity作为基本活动并获取错误。然后我使用活动,它的工作原理。 在我看来,你的代码是用于Theme.Holo的主题,现在我们使用Theme.AppCompat。所以如果你想改变,只需参考Changing Background and text color of AppCompat Light DarkActionBar Theme on android。 它适合我,祝你好运。

+0

我在活动中有一个NavigationDrawer,因此它扩展了AbstractNavDrawerActivity。不幸的是我没有写这段代码,所以我不知道为什么写这个的人用这种方式:S –

+1

我看到AbstractNavDrawerActivity,这个活动是从ActionBarActivity扩展的。而你的主题是形式Theme.Holo。所以它不会工作。如果您不想更改活动,只需更改主题,如http://stackoverflow.com/questions/29957822/changing-background-and-text-color-of-appcompat-light-darkactionbar-theme-on-and 。它会工作 – sunday

0

似乎你已经使用style而不是themeStyles and themes differ。所以更换

<style name="AppTheme" parent="android:style/Theme.Holo.Light"> 

随着

<style name="AppTheme" parent="android:Theme.Light"> 
+0

如果我把这个像你建议android工作室无法找到它并返回一个错误,所有的建议包括':style' –

+0

@JacopoGrassi请阅读我已链接到的文章。 –

+0

我做到了。我认为我不应该将它用于应用程序选项卡,而是用于单个视图。但是,我的问题仍然存在,我如何改变文字颜色? –

11

使用SpannableString我们可以设置的Actionbar title

SpannableString s = new SpannableString(title); 
s.setSpan(new ForegroundColorSpan(Color.GREEN), 0, title.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
getSupportActionBar().setTitle(s); 
1

我假设你正在使用工具栏的动作条。在所有的答案中,我认为这是最容易实现的答案。并适用于所有api版本。

所以这里,

操作栏标题使用textColorPrimary作为其文本的颜色。因此,要在styles.xml中更改该值,请使用textColorPrimary的项目创建新样式并设置所需的颜色。

<style name="appBarTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:textColorPrimary">@color/colorRed</item> 
</style> 

现在将该样式添加为xml中工具栏的主题。

<android.support.v7.widget.Toolbar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_scrollFlags="enterAlways" 
    android:id="@+id/toolbar" 
    android:theme="@style/appBarTheme"> 
</android.support.v7.widget.Toolbar> 

现在你得到了你需要的东西。

感谢

1

当我得到了同样的问题,我用:

<item name="titleTextStyle">@style/ActionBarTextStyle</item> 

<item name="android:titleTextStyle">@style/ActionBarTextStyle</item> 
1

只需添加app:titleTextColor="@color/CUSTOM_COLOR"像这样:

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@color/yellow_light" 
    app:titleTextColor="@color/CUSTOM_COLOR" 
    app:popupTheme="@style/AppTheme.PopupOverlay"/> 
0

我不知道解决的办法,但我可以使用此方法更改白色和黑色之间的文本颜色。

所以,在styles.xml您有:

<resources> 
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar"> 
     <item name="colorPrimary">#673AB7</item> 
     <item name="colorPrimaryDark">#512DA8</item> 
     <item name="colorAccent">#FF4081</item> 
    </style> 
</resources> 
如果你改变什么父=“...”,以深色或浅色的主题里面

,它适应文本颜色这些主题。例如,现在你有一个黑暗的主题,文本是白色的,但是当我更改为“Theme.AppCompat.Light”时,文本颜色变成黑色。

希望它有助于某种方式。

0

更改Activity主题为:

<style name="ThemeName" parent="android:Theme.Holo.Light"> 

    <item name="android:actionMenuTextColor">@color/white</item> 

</style>