如何更改动作栏的文本颜色?我继承了Holo光主题,我能够改变动作栏的背景,但我不知道什么是属性调整来改变文本颜色。
好,我能够改变文本颜色与属性android:textColorPrimary但它也改变了文本颜色的下拉菜单显示时,溢出发生在动作栏按钮。知道如何改变那些下拉菜单/列表的颜色吗?
如何更改动作栏的文本颜色?我继承了Holo光主题,我能够改变动作栏的背景,但我不知道什么是属性调整来改变文本颜色。
好,我能够改变文本颜色与属性android:textColorPrimary但它也改变了文本颜色的下拉菜单显示时,溢出发生在动作栏按钮。知道如何改变那些下拉菜单/列表的颜色吗?
当前回答
就我而言,我切换到AndroidX工具栏,而不是使用本机操作栏。此外,我依赖于视图绑定从活动访问工具栏,但您可以使用findViewById(…)。
(我删除了不相关的代码)。
styles.xml:
...
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
...
</style>
...
activity_main.xml:
...
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbarMain"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:titleTextColor="@color/colorOnPrimary"
...
/>
...
MainActivity.kt:
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
...
override fun onCreate(savedInstanceState: Bundle?) {
...
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
setSupportActionBar(binding.toolbarMain)
...
}
...
}
其他回答
试着在Activity的onCreate中添加这个。适用于几乎所有Android版本。
actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));
or
getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));
如果你想样式的字幕,然后简单地添加这在您的自定义样式。
<item name="android:subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
如果有人想在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>
我们需要在工具栏中使用app:theme属性定义主题,如下面的代码片段所示。
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:theme="@style/AppTheme.ToolbarFont" />
在此之前,我们必须在我们的styles.xml文件中添加主题,我们必须像下面的代码片段那样定义该样式的font-family。
<style name="AppTheme.ToolbarFont" parent="AppTheme">
<!--This line changes the color of text in Toolbar-->
<item name="android:textColorPrimary">@color/black</item>
<!--This line changes the color of icons in toolbar (back, overflow menu icons)-->
<item name="android:textColorSecondary">@color/azul</item>
<item name="textAllCaps">false</item>
<item name="android:textSize">16sp</item>
<item name="android:fontFamily">@font/montserrat_semi_bold</item>
为了添加自定义字体,我们需要在res目录中创建一个名为“font”的文件夹,如下面的截图所示。
我们已经在工具栏中实现了自定义字体。
很多答案已弃用,所以我将更新线程,并展示如何在ActionBar(工具栏)和ActionBar弹出菜单中更改文本颜色和背景色。
在Android中(截至2018年5月)使用操作栏(工具栏)的最新方法是使用主题和NoActionBar,而不是使用工具栏。
这就是你所需要的:
In Activity (which extends AppCompatActivity) declare Toolbar: Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(myToolbar); Add Toolbar in the Activity's layout xml. Here we will set our custom (overwritten themes), note android:theme="@style/ThemeOverlay.AppTheme.ActionBar" and app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu", they will do the trick. <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" /> In your styles.xml you will have to overwrite those two styles to set custom colors: <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>
就是这样,伙计们
附注:如果你问我,我会说:是的,整个主题的事情是一团糟。
最简单的方法是: 将这两行添加到styles.xml文件中
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:textColorSecondary">@color/white</item>
<item name="android:textColor">@color/white</item>
</style>
用你的颜色替换颜色。