rno*_*way 274 android android-3.0-honeycomb android-actionbar android-text-color
如何更改ActionBar的文本颜色?我继承了Holo Light主题,我能够改变ActionBar的背景,但是我没有找到调整文本颜色的属性是什么.
好的,我可以使用android:textColorPrimary属性更改文本颜色,但它也会更改ActionBar按钮上发生溢出时显示的下拉菜单的文本颜色.知道如何更改那些下拉菜单/列表的颜色吗?
rno*_*way 442
好的,我找到了更好的方法.我现在只能改变标题的颜色.你也可以调整副标题.
这是我的styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
</style>
<style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
</style>
<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/red</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
Phi*_*hil 95
我发现了一种适用于任何风格ActionBar
(Sherlock,Compat和Native)的方法:
只需使用html设置标题,并指定文本颜色.例如,要将ActionBar文本颜色设置为红色,只需执行以下操作:
getActionBar()/* or getSupportActionBar() */.setTitle(Html.fromHtml("<font color=\"red\">" + getString(R.string.app_name) + "</font>"));
Run Code Online (Sandbox Code Playgroud)
您也可以使用红色十六进制代码#FF0000
而不是单词red
.如果您遇到此问题,请参阅Android Html.fromHtml(String)不适用于<font color ='#'> text </ font>.
此外,如果要使用颜色资源,此代码可用于获取正确的HEX字符串,并在需要时删除alpha(字体标记不支持alpha):
int orange = getResources().getColor(R.color.orange);
String htmlColor = String.format(Locale.US, "#%06X", (0xFFFFFF & Color.argb(0, Color.red(orange), Color.green(orange), Color.blue(orange))));
Run Code Online (Sandbox Code Playgroud)
Bud*_*ius 93
我遇到了和你一样的问题,它是一个Holo.Light主题,但是我想要设置ActionBar颜色的样式,所以我需要更改文本颜色以及Title和Menus.所以最后我去了git hub并查看源代码,直到找到该死的正确样式:
<?xml version="1.0" encoding="utf-8"?>
<!-- For honeycomb and up -->
<resources>
<style name="myTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/myTheme.ActionBar</item>
<item name="android:actionMenuTextColor">@color/actionBarText</item>
</style>
<style name="myTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@drawable/actionbarbground</item>
<item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
</style>
<style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/actionBarText</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
所以现在你需要做的就是设置任何@color/actionBarText
与@drawable/actionbarbground
你想要的!
Abh*_*han 66
ActionBar ID不能直接使用,所以你必须在这里做一点点黑客攻击.
int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
if (actionBarTitleId > 0) {
TextView title = (TextView) findViewById(actionBarTitleId);
if (title != null) {
title.setTextColor(Color.RED);
}
}
Run Code Online (Sandbox Code Playgroud)
Mas*_*shi 29
这是一个古老的话题,但对于未来的读者来说,使用ToolBar可以让一切变得非常简单:
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setTitle(R.string.app_name);
toolbar.setTitleTextColor(getResources().getColor(R.color.someColor));
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
Mil*_*ank 27
我已经完成了简单的一行代码
actionBar.setTitle(Html.fromHtml("<font color='#ff0000'>ActionBartitle </font>"));
Run Code Online (Sandbox Code Playgroud)
Nab*_*eas 26
将其添加到操作栏的根目录.我有这个问题.
<style name="ActionBar" parent="@style/Theme.AppCompat.Light">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="actionMenuTextColor">@color/stdDarkBlueText</item>
</style>
<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="titleTextStyle">@style/ActionBarTitleText</item>
<item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>
<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/stdDarkBlueText</item>
<item name="android:textSize">12sp</item>
</style>
<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
<item name="android:textColor">@color/stdDarkBlueText</item>
<item name="android:textSize">12sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
actionMenuTextColor - 更改操作栏文本的文本颜色,当它是其中的一部分时它从未起作用Widget.Styled.ActionBar
,因此我必须将其添加到根目录.其他2个属性更改操作栏的标题和副标题.
小智 18
在操作栏上设置HTML字符串不适用于SDK v21 +中的Material主题
如果要更改它,则应在style.xml中设置主文本颜色
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Material.Light">
<!-- Customize your theme here. -->
<item name="android:textColorPrimary">@color/actionbar-text-color</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
Tar*_*run 12
如果您想设置字幕的样式,那么只需在自定义样式中添加它.
<item name="android:subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
Run Code Online (Sandbox Code Playgroud)
那些希望获得相同结果的人AppCompat
然后这就是我使用的:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomActivityTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<!-- other activity and action bar styles here -->
</style>
<!-- style for the action bar backgrounds -->
<style name="MyActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:background">@drawable/actionbar_background</item>
<item name="background">@drawable/actionbar_background</item>
<item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="android:subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
<item name="subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
</style>
<style name="MyTheme.ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/color_title</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
Sam*_*Sam 12
最直接的方法是在styles.xml中执行此操作.
Google的模板styles.xml目前生成以下内容:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
如果在结束标记之前再添加一行,如图所示,这会将文本颜色更改为Dark ActionBar应该使用的颜色:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>
Run Code Online (Sandbox Code Playgroud)
如果要将颜色自定义为其他颜色,可以在colors.xml中指定自己的颜色,甚至可以使用android:textColorPrimary属性从Android中使用内置颜色:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:textColorPrimary">@android:color/darker_gray</item>
</style>
Run Code Online (Sandbox Code Playgroud)
注意:这会更改标题的颜色以及ActionBar中显示的任何MenuItem的标题.
找到了一种无需在API> = 21上创建自己的布局即可很好地完成此任务的方法。
它只会在操作栏中为文本着色并控制可绘制对象。
希望对某人有用。
<!--Material design primary colors-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="android:navigationBarColor">@color/primary_dark</item>
<item name="actionBarTheme">@style/AppBaseTheme.Toolbar</item>
</style>
<!--Action bar-->
<style name="AppBaseTheme.Toolbar" parent="Widget.AppCompat.ActionBar.Solid">
<item name="android:textColorPrimary">@color/action_bar_text</item>
<item name="colorControlNormal">@color/action_bar_text</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这些功能运行良好
private void setActionbarTextColor(ActionBar actBar, int color) {
String title = actBar.getTitle().toString();
Spannable spannablerTitle = new SpannableString(title);
spannablerTitle.setSpan(new ForegroundColorSpan(color), 0, spannablerTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
actBar.setTitle(spannablerTitle);
}
Run Code Online (Sandbox Code Playgroud)
然后使用它只需提供您的操作栏和新颜色即
ActionBar actionBar = getActionBar(); // Or getSupportActionBar() if using appCompat
int red = Color.RED
setActionbarTextColor(actionBar, red);
Run Code Online (Sandbox Code Playgroud)
您可以使用这样的扩展功能:
private fun ActionBar.setTitleColor(color: Int) {
val text = SpannableString(title ?: "")
text.setSpan(ForegroundColorSpan(color),0,text.length, Spannable.SPAN_INCLUSIVE_INCLUSIVE)
title = text
}
Run Code Online (Sandbox Code Playgroud)
然后申请到你ActionBar
的
actionBar?.setTitleColor(Color.RED)
Run Code Online (Sandbox Code Playgroud)
不建议使用许多答案,因此我将更新线程并显示如何在ActionBar(工具栏)和ActionBar弹出菜单中更改文本颜色和背景色。
Android(截至2018年5月)中使用操作栏(工具栏)的最新方法是将主题与NoActionBar一起使用,而改用工具栏。
所以这是您需要的:
在活动(扩展了AppCompatActivity)中,声明工具栏:
Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(myToolbar);
Run Code Online (Sandbox Code Playgroud)在活动的布局xml中添加工具栏。在这里,我们将设置我们的自定义(覆盖主题),note android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
和app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu"
,它们将完成任务。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu"
app:layout_constraintTop_toTopOf="parent" />
Run Code Online (Sandbox Code Playgroud)在styles.xml中,您将必须覆盖这两种样式以设置自定义颜色:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="actionBarTheme">@style/ThemeOverlay.AppTheme.ActionBar</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppTheme.PopupMenu</item>
</style>
<style name="ThemeOverlay.AppTheme.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:textColorPrimary">@color/action_bar_text_color</item>
<item name="android:background">@color/action_bar_bg_color</item>
</style>
<style name="ThemeOverlay.AppTheme.PopupMenu" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:background">@color/popup_bg_color</item>
<item name="android:textColorPrimary">@color/popup_text_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)就是这样
ps,如果你问我,我会说:是的,整个主题的事情都是一团糟。
小智 5
这是我检查所有答案后使用的解决方案
<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorAccent">@color/Button_color</item>
<item name="android:editTextStyle">@style/EditTextStyle</item>
<item name="android:typeface">monospace</item>
<item name="android:windowActionBar">true</item>
<item name="colorPrimary">@color/Title_Bar_Color</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>
<style name="EditTextStyle" parent="Widget.AppCompat.EditText"/>
<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<item name="titleTextStyle">@style/ActionBarTitleText</item>
<item name="android:background">@color/Title_Bar_Color</item>
<item name="background">@color/Title_Bar_Color</item>
<item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>
<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/solid_white</item>
<item name="android:textSize">12sp</item>
</style>
<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
<item name="android:textColor">@color/solid_white</item>
<item name="android:textSize">12sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
更改所需的颜色即可使用
Try adding this in your Activity's onCreate. Works on almost every Android version.
actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));
Run Code Online (Sandbox Code Playgroud)
or
getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
264931 次 |
最近记录: |