更改工具栏中的标题颜色?

时间:2015-03-10 01:11:07

标签: android android-theme android-toolbar

我使用了一个工具栏,并将标题设置为:

((ActionBarActivity)getActivity()).getSupportActionBar().setTitle("Home");

有没有办法将颜色从黑色变为白色?

我尝试制作自己的主题并在xml中设置它,但没有骰子:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme2" parent="Theme.AppCompat">
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/accent</item>
        <item name="android:textColorPrimary">@color/primary_text</item>
        <item name="android:textColorSecondary">@color/secondary_text</item>

    </style>

    <style name="Widget.MyApp.ActionBar" parent="Widget.AppCompat.ActionBar">
        <item name="android:background">@color/primary</item>
        <item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item>
        <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    </style>

    <style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
        <item name="android:textColorPrimary">#FFFFFF</item>
    </style>



</resources>

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#e5e5e5"
    android:orientation="vertical" >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:minHeight="?attr/actionBarSize"
        android:background="@color/primary"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/Widget.MyApp.ActionBar">

        <Spinner
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/statsSpin"
            android:spinnerMode="dropdown"
            android:textColor="#FFFFFF"/>


    </android.support.v7.widget.Toolbar>



    <ListView
        android:id="@+id/yourStats"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:dividerHeight="0px"
        android:divider="@null"

        >
    </ListView>



</LinearLayout>

17 个答案:

答案 0 :(得分:46)

编程方式:

toolbar.setTitleTextColor(0xFFFFFFFF);

答案 1 :(得分:23)

AppCompat的创建者Theme vs Style blog postversion 21 of AppCompat上的帖子,DarkActionBar工具栏(即带有深色背景和浅色文字的Toolbar)可以通过将android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"添加到Toolbar的XML:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="@color/primary"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/statsSpin"
        android:spinnerMode="dropdown"/>


</android.support.v7.widget.Toolbar>

这会将文字颜色和默认颜色更改为许多属性(例如您的Spinner到浅色背景所需的浅色文字。

答案 2 :(得分:19)

在应用程序基础主题中创建新样式

  <style name="custom_toolbar" parent="@style/Widget.AppCompat.Toolbar">
        <item name="titleTextColor">#replace with color</item>
  </style>

并使用工具栏的样式

  <item name="toolbarStyle">@style/custom_toolbar</item>

答案 3 :(得分:9)

我知道有很多答案超出希望,它会帮助那些不理解上述答案的人。

Android有一个名为Toolbar的视图。此视图的标题始终为color.xml资源的默认颜色,项目名称为重音。您可以通过两种方式更改工具栏颜色。

  1. 我建议您通过xml,在下面您可以看到示例

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:titleTextColor="@color/White" />Here you can change it.Remember APP attribute not ANDROID
    
  2. 通过编程方式在活动或片段中。

    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
    toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.colorAccent));
    

答案 4 :(得分:6)

如果您只想更改标题文字颜色, 试试这个..

getSupportActionBar().setTitle(Html.fromHtml("<font color='#746E66'>"+titleText+"</font>"));

它有效.. !!

答案 5 :(得分:1)

在这里,我使用下面的代码对其进行了修复,并且它适用于每个API级别:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_primary_dark</item>
<item name="colorAccent">@color/color_accent</item>
<item name="toolbarStyle">@style/CustomToolBarStyle</item>
</style>

<style name="CustomToolBarStyle" parent="@style/Widget.AppCompat.Toolbar">
<item name="titleTextColor">@color/title_text_color</item>
</style>

答案 6 :(得分:0)

在xml中:

应用程式:titleTextColor =&#34; @色/白色&#34;如

<android.support.v7.widget.Toolbar
    android:id="@+id/tb_top"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/AppTheme.DarkToolbar"
    app:titleTextColor="@color/White" />

答案 7 :(得分:0)

toolbar.setTitleTextColor(getResources()的getColor(R.color.black));

(工具栏是您在acitivyt类中为工具栏指定的名称) (在您的颜色值xml中设置您想要的颜色并将其引用到您选择的颜色名称,如此处所示我保留了一些主要颜色的正常名称) 我花了一些时间来弄清楚这一点,但这是我能让它发挥作用的唯一方法,ThemEditor应该允许这样但它就是它。

答案 8 :(得分:0)

使用此代码

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        app:titleTextColor="@color/colorAccent"
        app:theme="@style/ToolbarColoredBackArrow"
        app:subtitleTextColor="@color/colorAccent"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

答案 9 :(得分:0)

可以通过编程方式进行更改,如上所述。但是降低代码复杂性,您应该通过style.xml进行更改 首先在 res / values 文件夹下创建attrs.xml 然后添加两个对 attrs.xml 文件夹的引用,如下所示

<强> attrs.xml

 <?xml version="1.0" encoding="utf-8"?>
 <resources>
    <attr name="toolbar_theme" format="reference" />
    <attr name="toolbar_theme_title" format="reference" />
</resources>

在确定引用之后,在 style.xml 中创建一个样式,如下所示

style.xml

<style name="CustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
      <item name="colorPrimary">#00A4E4</item>
      <item name="colorPrimaryDark">#AB0634</item>
      <item name="colorAccent">#AB0634</item>
      <item name="toolbar_theme">@style/CustomTheme.Toolbar</item>
      <item name="toolbar_theme_title">@style/CustomTheme.Toolbar.Title</item>
      <item name="android:textColorPrimary">@color/black</item>
      <item name="android:textColorSecondary">@android:color/black</item>
      <item name="windowActionModeOverlay">true</item>
</style>

<style name="CustomTheme.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar">
     <!-- if you have a navigationdrawer you change it color also -->
     <item name="colorControlNormal">#AB0634</item>
</style>

<style name="CustomTheme.Toolbar.Title" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
     <!-- Set title size -->
     <item name="android:textSize">@dimen/abc_text_size_title_material_toolbar</item>
     <!-- Set title color -->
     <item name="android:textColor">#AB0634</item>
</style>

现在我们在 attrs.xml 中创建了 toolbar_theme toolbar_theme_title 引用,而不是以样式提供对这些自定义主题的引用。 XML

最后,我们将此引用提供给下面的工具栏

<android.support.v7.widget.Toolbar
     android:id="@+id/toolbar"
     android:layout_width="match_parent"
     android:layout_height="?attr/actionBarSize"
     android:background="?attr/colorPrimary"
     android:theme="?attr/toolbar_theme"
     app:titleTextAppearance="?attr/toolbar_theme_title"
     android:elevation="4dp"
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

多数民众赞成。您可以以编程方式提供此主题,也可以在 androidmanifest.xml 中设置,如下所示。

<强>编程

 public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setTheme(R.style.CustomTheme); // (for Custom theme)
    this.setContentView(R.layout.myactivity);

<强>的AndroidManifest.xml

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

 <activity
     android:theme="@style/CustomTheme">

答案 10 :(得分:0)

您可以通过扩展Widget.AppCompat.Toolbar并设置titleTextAppearance和subtitleTextAppearance属性来定义自定义工具栏样式。这样您就可以更改工具栏的标题和副标题的颜色和文字大小以供参考 http://www.zoftino.com/android-toolbar-tutorial

<style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="toolbarStyle">@style/MyToolBarStyle</item>
    </style>
    <style name="MyToolBarStyle" parent="Widget.AppCompat.Toolbar">
        <item name="titleTextAppearance">@style/MyTitleTextAppearance</item>
        <item name="subtitleTextAppearance">@style/MySubTitleTextAppearance</item>
    </style>
    <style name="MyTitleTextAppearance" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
        <item name="android:textSize">25dp</item>
        <item name="android:textColor">#ff3d00</item>
    </style>
    <style name="MySubTitleTextAppearance" parent="TextAppearance.Widget.AppCompat.Toolbar.Subtitle">
        <item name="android:textSize">20dp</item>
        <item name="android:textColor">#1976d2</item>
    </style>

答案 11 :(得分:0)

您可以使用属性actionBarTheme更改操作栏的主题,如下所示。虽然它已经在API级别21中添加,但它似乎与旧的API兼容。

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
</style>

答案 12 :(得分:0)

在Kotlin,使用Sandip的回答:

with(getSupportActionBar()) {
        val titleText: String = title.toString()
        setTitle(Html.fromHtml("<font color='#746E66'>" + titleText + "</font>"))
    }

答案 13 :(得分:0)

您可以使用以下代码以编程方式对其进行更改。

toolbar.setTitleTextColor(android.graphics.Color.WHITE);

答案 14 :(得分:0)

在android.support.v7.widget.Toolbar内,添加以下行:

local:titleTextColor="@color/the_color_you_want"

答案 15 :(得分:0)

我找到了相当简单的解决方案。

可以通过以下方式(通过XML或以编程方式)完成。

第一个(XML解决方案):

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:layout_scrollFlags="scroll|enterAlways"
    app:popupTheme="@style/Theme.AppCompat.NoActionBar"
    app:titleTextColor="@color/white" />

第二(通过编程):

val toolbar = findViewById<Toolbar>(R.id.toolbar)
toolbar.setTitleTextColor(Color.WHITE)

第二种解决方案要求您的SDK版本至少为21,

答案 16 :(得分:0)

要扩展tachyonflux,使用HEX设置颜色

 toolbar.setTitleTextColor(Color.parseColor("#519c3f"));