Android - Изменить цвет текста заголовка

Я разрабатываю приложение, и я хочу change the textcolor of the actionbar title. теперь я определил тему в своем манифесте:

<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>

это не работает, но я не понимаю почему. это должно работать в соответствии с этим ответом. Также работает стиль textview.

что я делаю неправильно?

UPDATE: изменен, чтобы встретить ответ Грейс Фэн ниже

Ответы

Ответ 1

блуждая по StackOverflow, я нашел этот ответ, который наконец-то сработал.

Сообщаю об этом здесь:

<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

Используя SpannableString, мы можем установить цвет текста Actionbar title

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

Ответ 3

<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">

Ответ 4

Вы можете найти, как настроить ActionBar здесь. Вместо этого я рекомендую использовать ToolBar и Theme.AppCompat - .

Ответ 5

Я предполагаю, что вы используете ToolBar качестве ActionBar. Я думаю, что из всех ответов это самый простой для реализации. И работает на всех версиях 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>

И теперь вы получили то, что вам нужно.

Ответ 6

Просто добавьте 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"/>

Ответ 7

Когда я получил ту же проблему, я использовал:

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

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

Ответ 8

Я думаю, что это просто проблема с вашей деятельностью. Я использовал тот же код, что и вы, и он работает. введите описание изображения здесь

Во-первых, я использовал AppCompatActivity в качестве базового действия и получил ошибку. и затем я использую активность, и она работает. На мой взгляд, ваш код используется для темы для Theme.Holo, и теперь мы используем Theme.AppCompat. Поэтому, если вы хотите изменить, просто ссылку Изменение фона и цвет текста темы AppCompat Light DarkActionBar на Android. Это работает для меня. Удачи вам.

Ответ 9

Кажется, вы использовали style вместо theme. Стили и темы отличаются. Поэтому замените

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

С

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

Ответ 10

Я не знаю решения, но я смог изменить цвет текста между белым и черным с помощью этого метода.

поэтому в файле 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", цвет текста становится черным.

Надеюсь, что это поможет.

Ответ 11

Измените тему Activity как:

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

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

</style>

Ответ 12

Просто была эта проблема, наконец-то разобрался. В вашем style.xml не указывайте цвет фона для вашей панели инструментов. Затем определите цвет в каждом файле layout.xml:

<android.support.v7.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="#B678EE"
    android:elevation="4dp"
    android:theme="@style/ToolbarTheme"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

Это дает вам гибкость, чтобы иметь возможность легко иметь разные цвета панели действий в зависимости от активности, если это необходимо.

Ответ 13

Это полезный код. Следуйте этому коду.

<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/colorApp</item>
</style>

<style name="TextAppearance.AppCompat.Widget.ActionBar.Title" parent="@android:style/TextAppearance">
    <item name="android:textSize">23dp</item>
    <item name="android:textColor">@color/YOUR_COLOR</item>
</style>

Во втором теге стиля мы настраиваем заголовок actionBar.

Теперь добавьте этот код в приложение в Manifest File

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