操作栏文本颜色
如何更改 ActionBar 的文本颜色?我继承了 Holo Light 主题,我可以更改 ActionBar 的背景,但我不知道要调整什么属性来更改文本颜色。
好的,我可以使用属性 android:textColorPrimary 更改文本颜色,但它也会更改 ActionBar 按钮上发生溢出时显示的下拉菜单的文本颜色。知道如何更改这些下拉菜单/列表的颜色吗?
how can I change the text color of the ActionBar? I've inherited the Holo Light Theme, I'm able to change the background of the ActionBar but I don't find out what is the attribute to tweak to change the text color.
Ok, I'm able to change the text color with the attribute android:textColorPrimary but it also changes the text color of the dropdown menu displayed when an overflow happen on the ActionBar buttons. Any idea how to change the color of those dropdown menu / List ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(28)
好吧,我找到了更好的方法。我现在只能更改标题的颜色。您还可以调整字幕。
这是我的 styles.xml:
Ok, I've found a better way. I'm now able to only change the color of the title. You can also tweak the subtitle.
Here is my styles.xml:
我找到了一种适用于任何风格的
ActionBar
(Sherlock、Compat 和 Native)的方法:使用html设置标题,并指定文本颜色。例如,要将 ActionBar 文本颜色设置为红色,只需执行以下操作:
您还可以使用红色十六进制代码
#FF0000
代替单词red.如果您遇到问题,请参阅 Android Html。 fromHtml(String) 不适用于 text。
此外,如果您想使用颜色资源,可以使用此代码获取正确的十六进制字符串,并根据需要删除 alpha(font 标签不支持 alpha):
I found a way that works well with any flavor of
ActionBar
(Sherlock, Compat, and Native):Just use html to set the title, and specify the text color. For example, to set the ActionBar text color to red, simply do this:
You can also use the red hex code
#FF0000
instead of the wordred
. If you are having trouble with this, see Android Html.fromHtml(String) doesn't work for <font color='#'>text</font>.Additionally, if you want to use a color resource, this code can be used to get the correct HEX String, and removing the alpha if needed (the font tag does not support alpha):
我遇到了和你一样的问题,它是一个 Holo.Light 主题,但我想设置 ActionBar 颜色的样式,所以我还需要更改文本颜色以及标题和菜单。所以最后我去了 git hub 并查看了源代码,直到找到该死的正确样式:
所以现在你所要做的就是设置任何
@color/actionBarText
和@drawable/你想要的actionbarbground
!I was having the same problem as you, it's a Holo.Light theme but I wanted to style the ActionBar color, so I needed to change the text color as well and also both Title and Menus. So at the end I went to git hub and looked at source code until I find the damn correct style:
so now all you have to do is set whatever
@color/actionBarText
and@drawable/actionbarbground
you want!ActionBar ID 不能直接获得,因此您必须在这里进行一些修改。
The ActionBar ID is not available directly, so you have to do little bit of hacking here.
最直接的方法是在 styles.xml 中执行此操作。
Google 的模板 styles.xml 当前会生成以下内容:
如果您在结束标记之前再添加一行,如图所示,这会将文本颜色更改为深色 ActionBar 应有的颜色:
如果您想将颜色自定义为其他颜色,您可以在colors.xml中指定您自己的颜色,甚至可以使用android:textColorPrimary属性使用Android的内置颜色:
注意:这会更改标题的颜色以及ActionBar中显示的任何菜单项的标题。
The most straight-forward way is to do this in the styles.xml.
Google's template styles.xml currently generates the following:
If you add one more line before the closing tag, as shown, that will change the text color to what it should be with a Dark ActionBar:
If you want to customize the color to something else, you can either specify your own color in colors.xml or even use a built-in color from Android using the android:textColorPrimary attribute:
Note: This changes the color of the title and also the titles of any MenuItems displayed in the ActionBar.
这是一个老话题,但对于未来的读者来说,使用 ToolBar 使一切变得非常简单:
It's an old topic but for future readers, using ToolBar makes everything very easy:
我已经用简单的一行代码完成了
i have done with simple one line code
将其添加到操作栏的根部。我遇到了这个问题。
actionMenuTextColor - 更改操作栏文本的文本颜色,当它是
Widget.Styled.ActionBar
的一部分时,它从未起作用,因此我必须将其添加到根目录中。其他 2 个属性更改操作栏的标题和副标题。Add it to the root of the action bar. I had this problem.
actionMenuTextColor - changes text color for the action bar text, it never worked when it was part of the
Widget.Styled.ActionBar
, so I had to add it to the root. Other 2 attributes change title and subtitle of an action bar.在操作栏上设置 HTML 字符串不适用于 SDK v21+ 中的 Material 主题。
如果您想更改它,您应该在 style.xml 中设置主要文本颜色
Setting a HTML string on the action bar doesn't work on the Material theme in SDK v21+
If you want to change it you should set the primary text color in your style.xml
如果您还想设置副标题的样式,只需将其添加到您的自定义样式中即可。
如果有人希望获得
AppCompat
库相同的结果,那么这就是我使用的:If you want to style the subtitle also then simply add this in your custom style.
People who are looking to get the same result for
AppCompat
library then this is what I used:许多答案已被弃用,因此我将更新线程并展示如何更改 ActionBar(工具栏)和 ActionBar 弹出菜单中的文本颜色和背景颜色。
Android 中使用操作栏(工具栏)的最新方法(截至 2018 年 5 月)是将主题与 NoActionBar 一起使用,并使用工具栏。
所以这就是您所需要的:
在 Activity(扩展 AppCompatActivity)中声明 Toolbar:
在 Activity 的布局 xml 中添加 Toolbar。在这里,我们将设置自定义(覆盖主题),请注意
android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
和app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu “
,他们会成功的。在 styles.xml 中,您必须覆盖这两种样式才能设置自定义颜色:
就是这样
。如果你问我,我会说:是的,整个主题的事情一团糟。
A lot of answers are deprecated so I'll update the thread and show how to change text color and backgroundcolor on ActionBar (Toolbar) and in ActionBar pop up menu.
The latest approach in Android (as of May 2018) in working with Action bar (Toolbar) is to use Theme with NoActionBar and use Toolbar instead.
so here is what you need:
In Activity (which extends AppCompatActivity) declare Toolbar:
Add Toolbar in the Activity's layout xml. Here we will set our custom (overwritten themes), note
android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
andapp:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu"
, they will do the trick.In your styles.xml you will have to overwrite those two styles to set custom colors:
That's it folks
p.s. if you ask me I would say: YES, this whole Theme thing is a hell of a mess.
找到了一种很好的方法,无需在 API >= 21 上创建自己的布局。
它只会对操作栏中的文本进行着色并控制可绘制对象。
希望它对某人有用。
Found the way to do it nicely without creating your own layout on API >= 21.
It will only colorize texts and control drawables inside the action bar.
Hope it will be useful for someone.
运行良好
这些函数在 Java 中
,然后使用它只需向其提供操作栏和新颜色,即
在 Kotlin 中,
您可以使用如下扩展函数:
然后将其应用于您的
ActionBar
These functions work well
In Java
then to use it just feed it your action bar and the new color i.e.
In Kotlin
You can use an extension function like this:
And then apply to your
ActionBar
with这是我检查所有答案后使用的解决方案
更改所需的颜色即可工作
This is the solution I used after checking all answers
Change the required colors it will work
尝试将其添加到您的 Activity 的 onCreate 中。适用于几乎所有 Android 版本。
或者
Try adding this in your Activity's onCreate. Works on almost every Android version.
or
只需将其放入您的主题风格即可。
just put this in your thme style.
<item name="android:textColorPrimary">@color/yourcolor</item>
尝试了很多方法,在低版本的API中,可行的方法是
- @color/your_color
并且不要使用Android命名空间,希望可以帮助你ps:
Try a lot of methods, in the low version of the API,a feasible method is
<item name="actionMenuTextColor">@color/your_color</item>
and don't use the Android namespace,hope can help youps:
最简单的方法是:
将这两行添加到您的 styles.xml 文件中,
并将颜色替换为您的颜色。
The most simple way is :
Add these two lines to your styles.xml file
Replace the color with your color.
这里的Style.xml就像
添加
你应该在AppTheme中
Here Style.xml is like
You should add
in AppTheme
如果您需要以编程方式设置颜色,请执行以下操作:
If you need to set the color programmatically this is the way to do it:
就我而言,我切换到 AndroidX Toolbar 而不是使用本机操作栏。另外,我依靠 视图绑定 从活动访问工具栏,但您可以使用
findViewById(...)
来实现。(我删除了不相关的代码)。
styles.xml
:activity_main.xml
:MainActivity.kt
:In my case, I switched to AndroidX Toolbar instead of using the native action bar. Also, I rely on view binding to access the toolbar from the activity, but you can use
findViewById(...)
for that.(I removed the code which is irrelevant).
styles.xml
:activity_main.xml
:MainActivity.kt
:一个不错的解决方案是使用 SpannableStringBuilder 并以这种方式设置颜色。您甚至可以在字符串的不同部分使用不同的颜色,添加图像等。
已使用新的支持库进行测试。
请参阅 Android:使用 TextView.setText() 对字符串的一部分进行着色?
A nice solution is to user a SpannableStringBuilder and set the color that way. You can even use different colors on different parts of the string, add images etc.
Tested with the new support library.
See Android: Coloring part of a string using TextView.setText()?
这不是推荐的解决方案,因为我将在此处使用 android api,但由于我的应用程序需要在 xml 此处不可能的条件下动态更改主题,所以我需要这样做。但这个解决方案工作得非常好。
解决方案: -
This is not the recommended solution as I am going in android apis here but as my application requires to change the theme dynmically on conditions xml not possible here, So I need to do this. But This solution is working very nice.
Solution:--
对于 Android 5(棒棒糖),您必须使用 android:actionBarPopupTheme 来设置溢出菜单的 textColor。
For Android 5 (lollipop) you will have to use android:actionBarPopupTheme to set the textColor for the overflow menu.
您可以直接在
xml
文件中使用 html属性来更改任何文本的颜色。
例如在
strings.xml
中:you can change color of any text by use html
<font>
attribute directly inxml
files.for example in
strings.xml
:我们需要使用 app:theme 属性在工具栏中定义主题,如下代码片段所示。
在此之前,我们必须在 styles.xml 文件中添加主题,并且必须在该样式中定义 font-family,如下面的代码片段所示。
要添加自定义字体,我们需要在 res 目录中创建一个名为“font”的文件夹,如下图所示。
我们在工具栏中实现了自定义字体。
We need to define the theme in our toolbar with app:theme attribute like the below code snippet.
Before that, we have to add the theme in our styles.xml file and we have to define font-family in that style like the below code snippet.
To add custom fonts we need to create a folder with the name “font” in the res directory like the below screenshot.
We have achieved a custom font in our toolbar.
如果您使用自定义操作栏,您可以使用这些属性:
或通过如下方法:
有关更多属性,请检查此 链接
If you are using a custom action bar you can use these properties:
or by a method like this:
for more properties check this link